2013-10-05 50 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

那麼必須有一種方法來定位每個輸入,並通過鍵入來選擇和更改它的值它手動...我只是不知道如何正確定位它們。沒有想法爲什麼.eq()不會工作。 – 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?)。所以你真的應該「手動」添加ID到你的輸入元素,並通過它們的ID而不是它們的索引來選擇它們。

正如@大衛·托馬斯指出,一些樣本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安全地完成剩下的工作。