2013-10-05 4 views
0

Мне действительно нужно это, потому что я не могу вручную набирать множество параметров для панели администратора. Поэтому мне нужен быстрый способ получить каждый вход/выбор и добавить значение, как я хочу.Простое изменение нескольких значений с помощью jQuery

Вот looong образец для поля один вариант:

$("select[name=big_proceed]").val("true"); 
$("select[name=proceed_action]").val(""); 
$("input[name=choice_premium]").val("Premium <span>Code</span>"); 
$("input[name=big_proceed_pts]").val(""); 

$("#settings_proceed input, #settings_proceed select").each(function() { 
    databaseData($(this)); 
}); 

Я думал, что что-то подобное может работать, но, видимо, я был неправ. Вот пример:

$("#settings_proceed :input").each(function() { 
    $(this) 
     .eq(0).val("true") 
     .eq(1).val("") 
     .eq(2).val("Premium <span>Code</span>") 
     .eq(3).val(""); 

    databaseData($(this)); 
}); 

Любые предложения для меня?

+0

нет простого способа сделать то, что вы, что .. потому что нет рисунка .. каждое поле имеет различное значение. –

+0

Ну, должен быть способ нацеливать каждый вход и выбирать и изменять его значение, набрав это вручную ... Я просто не знаю, как правильно их настроить. Нет идей, почему .ec() не будет работать. – dvLden

+0

Вы знаете, что поможет? HTML, с точными инструкциями относительно того, какие элементы вы хотите выбрать, и что именно вы хотите сделать. –

ответ

1

От jQuery documentation:

.eq (индекс): Уменьшить набор соответствующих элементов к одному по указанному индексу.

Следовательно, ваш второй пример не работает по назначению, потому что $(this) соответствует только один элемент (это намерение за .each()). Вы можете переписать код следующим образом:

var values = ["true", "", "Premium <span>Code</span>", ""]; 
$("#settings_proceed :input").each(function(i){ 
    $(this).val(values[i]); 
    databaseData($(this)); 
}); 

Однако такой подход делает код трудно читать и подверженной ошибкам, поскольку он предполагает фиксированный порядок HTML элементов (то, что если вы измените порядок полей ввода но забудьте настроить JS соответственно?). Поэтому вам действительно нужно «вручную» добавлять идентификаторы к вашим элементам ввода и выбирать их по их идентификатору, а не по индексу.

Как @David Томас отметил, некоторые примеры HTML будет весьма полезным здесь, но, не зная никаких подробностей о том, что вы пытаетесь сделать, я хотел бы предложить следующее:

var values = { 
    big_proceed: "true", 
    proceed_action: "", 
    choice_premium: "Premium <span>Code</span>", 
    big_proceed_pts: "" 
}; 

$.each(values, function(key, value){ 
    $("#settings_proceed").find("[name='"+key+"']").val(value); 
    databaseData($(this)); 
}); 

Таким образом, вы можете точно определить все значения в одном объекте и позволить jQuery безопасно выполнять все остальное.

Смежные вопросы