2013-02-26 132 views
0

大家好我有下面的jquery函數來啓用提交只有當輸入有1個或更多的值,但我有相同的許多輸入和提交按鈕在我的網頁上jquery函數wrking罰款對於第一種形式,但它不適用於其他形式。Jquery函數不適用於兩種或兩種以上形式

腳本:

$(function() 
{ 
    $("#textbox").bind("change keyup", function() 
    {  
     if ($("#textbox").val() != "") 
      $(this).closest("form").find(":submit").removeAttr("disabled"); 
     else 
      $(this).closest("form").find(":submit").attr("disabled", "disabled");  
    }); 
}); 

HTML:

<form action="http://localhost/" method="post" accept-charset="utf-8"> 
    <input type="text" id="textbox" name="textbox" /> 
    <input type="submit" id="submit" name="submit" value="textbox" disabled="disabled" /> 
</form> 

<form action="http://localhost/" method="post" accept-charset="utf-8"> 
    <input type="text" id="textbox" name="textbox" /> 
    <input type="submit" id="submit" name="submit" value="textbox" disabled="disabled" /> 
</form> 

<form action="http://localhost/" method="post" accept-charset="utf-8"> 
    <input type="text" id="textbox" name="textbox" /> 
    <input type="submit" id="submit" name="submit" value="textbox" disabled="disabled" /> 
</form> 

當我輸入第一個文本框什麼提交按鈕得到激活和工作正常,但如果我在第二或第三個文本框中添加任何值提交按鈕沒有被激活。

+0

計算中的ID通常用於**唯一地識別某些內容。您多次使用相同的ID,隨後出現錯誤。 – 2013-02-26 18:44:20

+0

你是否嘗試過使用類而不是id作爲選擇器?您應該知道,您不能將同一個ID分配給同一頁面中的多個元素。編輯:@lee:該死的,你打我了;-) – eyecatchUp 2013-02-26 18:44:58

+0

非常感謝你。這個對我有用。你們是石頭。再次感謝你。 – 2013-02-26 19:02:53

回答

2

因爲您只能在同一頁面上添加id =「textbox」的一個元素。

添加一些類名來輸入(例如「文本框」),並改變選擇「#textbox」到「.textbox」事件綁定:

$(function() 
{ 
    $(".textbox").bind("change keyup", function() 
    {  
     if ($(this).val() != "") 
      $(this).closest("form").find(":submit").removeAttr("disabled"); 
     else 
      $(this).closest("form").find(":submit").attr("disabled", "disabled");  
    }); 
}); 
1

只需使用class而不是id因爲你不能有不止一個元素相同id

此外,您需要在事件處理函數內部使用$(this)來訪問更改後的元素。

試試這個:

所有的
<script type="text/javascript"> 
    $(function() { 
     $(".textbox").bind("change keyup", function() {  
       if ($(this).val() != "") 
        $(this).closest("form").find(":submit").removeAttr("disabled"); 
       else 
        $(this).closest("form").find(":submit").attr("disabled", "disabled");  
      }); 
     }); 
</script> 

<form action="http://localhost/" method="post" accept-charset="utf-8"> 
    <input type="text" class="textbox" name="textbox" /> 
    <input type="submit" class="submit" name="submit" value="textbox" disabled="disabled" /> 
</form> 

<form action="http://localhost/" method="post" accept-charset="utf-8"> 
    <input type="text" class="textbox" name="textbox" /> 
    <input type="submit" class="submit" name="submit" value="textbox" disabled="disabled" /> 
</form> 

<form action="http://localhost/" method="post" accept-charset="utf-8"> 
    <input type="text" class="textbox" name="textbox" /> 
    <input type="submit" class="submit" name="submit" value="textbox" disabled="disabled" /> 
</form> 
0

首先,您使用的是相同的ID'shtml更多div,這是沒有好處的。 Id是獨一無二的。 改爲使用class。否則它不會與classes一起使用,您應該嘗試使用3個不同的div或$.each()函數或keyup()