HTML форма только для чтения SELECT tag / input

Я работаю так:

/** Open another app.
 * @param context current Context, like Activity, App, or Service
 * @param packageName the full package name of the app to open
 * @return true if likely successful, false if unsuccessful
 */
public static boolean openApp(Context context, String packageName) {
    PackageManager manager = context.getPackageManager();
    try {
        Intent i = manager.getLaunchIntentForPackage(packageName);
        if (i == null) {
            return false;
            //throw new ActivityNotFoundException();
        }
        i.addCategory(Intent.CATEGORY_LAUNCHER);
        context.startActivity(i);
        return true;
    } catch (ActivityNotFoundException e) {
        return false;
    }
}

Пример использования:

openApp(this, "com.google.android.maps.mytracks");

Надеюсь, что это кому-то поможет.

521
задан Adrien Be 24 January 2014 в 14:12
поделиться

7 ответов

Необходимо сохранить select элемент disabled, но также и добавить другого скрытого input с тем же именем и значением.

, Если Вы повторно включаете свой ВЫБОР, необходимо скопировать его значение в скрытый вход в onchange событии и отключить (или удалить), скрытый вход.

Вот демонстрация:

$('#mainform').submit(function() {
    $('#formdata_container').show();
    $('#formdata').html($(this).serialize());
    return false;
});

$('#enableselect').click(function() {
    $('#mainform input[name=animal]')
        .attr("disabled", true);
    
    $('#animal-select')
        .attr('disabled', false)
    	.attr('name', 'animal');
    
    $('#enableselect').hide();
    return false;
});
#formdata_container {
    padding: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
    <form id="mainform">
        <select id="animal-select" disabled="true">
            <option value="cat" selected>Cat</option>
            <option value="dog">Dog</option>
            <option value="hamster">Hamster</option>
        </select>
        <input type="hidden" name="animal" value="cat"/>
        <button id="enableselect">Enable</button>
        
        <select name="color">
            <option value="blue" selected>Blue</option>
            <option value="green">Green</option>
            <option value="red">Red</option>
        </select>

        <input type="submit"/>
    </form>
</div>

<div id="formdata_container" style="display:none">
    <div>Submitted data:</div>
    <div id="formdata">
    </div>
</div>
419
ответ дан bezmax 24 January 2014 в 14:12
поделиться

Если выпадающий выбор только для чтения начиная с рождения и не должен изменяться вообще, возможно, необходимо ли использовать другое управление вместо этого? Как простое <div> (плюс скрытое поле формы) или <input type="text">?

Добавленный: , Если выпадающее не только для чтения все время и JavaScript используется для позволения/запрещения его, то это - все еще решение - просто изменяют DOM на лету.

0
ответ дан Vilx- 24 January 2014 в 14:12
поделиться

Вместо самого выбора, Вы могли отключить все опции за исключением в настоящее время выбираемой опции. Это дает появление выпадающей работы, но только опция, которую Вы хотите, передала в, допустимый выбор.

1
ответ дан Adam Bellaire 24 January 2014 в 14:12
поделиться
<select id="countries" onfocus="this.defaultIndex=this.selectedIndex;" onchange="this.selectedIndex=this.defaultIndex;">
<option value="1">Country1</option>
<option value="2">Country2</option>
<option value="3">Country3</option>
<option value="4">Country4</option>
<option value="5">Country5</option>
<option value="6">Country6</option>
<option value="7" selected="selected">Country7</option>
<option value="8">Country8</option>
<option value="9">Country9</option>
</select>

Протестированный и рабочий в IE 6, 7 & 8b2, Firefox 2 & 3, Opera 9.62, Safari 3.2.1 для Windows и Google Chrome.

39
ответ дан Grant Wagner 24 January 2014 в 14:12
поделиться

Можно повторно включить избранный объект на, отправляют.

РЕДАКТИРОВАНИЕ : т.е. обычно отключая избранный тег (с отключенным атрибутом) и затем повторно включая его автоматически прежде, чем отправить форму:

Пример с jQuery:

  • Для отключения его:

    $('#yourSelect').prop('disabled', true);
    
  • , Чтобы повторно включить их, прежде чем представление так, чтобы ДОБРАЛИСЬ / данные POST, включено:

    $('#yourForm').on('submit', function() {
        $('#yourSelect').prop('disabled', false);
    });
    

, Кроме того, Вы могли повторно включить каждый отключенный вход или выбор:

$('#yourForm').on('submit', function() {
    $('input, select').prop('disabled', false);
});
101
ответ дан fishjd 24 January 2014 в 14:12
поделиться

, следуя от предложения Grant Vatnower; Вот фрагмент jQuery, который делает его с функциями обработчика вместо атрибутов Direct Onxxx:

var readonlySelect = function(selector, makeReadonly) {

    $(selector).filter("select").each(function(i){
        var select = $(this);

        //remove any existing readonly handler
        if(this.readonlyFn) select.unbind("change", this.readonlyFn);
        if(this.readonlyIndex) this.readonlyIndex = null;

        if(makeReadonly) {
            this.readonlyIndex = this.selectedIndex;
            this.readonlyFn = function(){
                this.selectedIndex = this.readonlyIndex;
            };
            select.bind("change", this.readonlyFn);
        }
    });

};
2
ответ дан 22 November 2019 в 22:20
поделиться

, Что лучший способ состоит в том, чтобы эмулировать атрибут "только для чтения" для избранного тега и все еще получить данные POST?

Просто делают это входом/текстовым полем и добавляют атрибут 'только для чтения' к нему. Если выбор эффективно 'отключен', то Вы не можете изменить значение так или иначе, таким образом, Вам не нужен избранный тег, и можно просто отобразить "выбранное" значение как только для чтения ввод текста. В большинстве целей UI я думаю, что это должно быть достаточным.

0
ответ дан 22 November 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: