2012-04-18 41 views
1

我有一個需求,當我需要從數據庫填充文本輸入字段的結果時使用「提交」按鈕提交表單,並在同一時間使輸入字段不可編輯。我現在有一個jQuery函數來做到這一點:使用JQuery單擊提交按鈕時,使文本輸入可編輯和不可編輯

$(function(){ 
    $(".makeEditable").click(function(){ 
     $('input:text').removeAttr("readonly");  
    }); 
    $(".makeNonEditable").click(function(){ 
     $('input:text').attr("readonly", "readonly");  
    });    
}) 

此功能時,我用按鈕來測試它工作正常:

<input type="button" value="Make Non Editable" class="makeNonEditable" /> 

然而,這不符合提交按鈕工作

<input type="submit" value="Search" class="makeNonEditable"/> 

所以,我不明白爲什麼它不提交按鈕,但與正常的按鈕一起工作。 任何幫助,將不勝感激

+0

當您點擊提交按鈕時會發生什麼? – ManseUK 2012-04-18 10:18:30

+0

您是否以編程方式提交表單?發佈一些實際的HTML。 – rgin 2012-04-18 11:06:30

回答

1

從您的文章似乎既您的按鈕具有相同的類makeNonEditable

您可以設置readonly屬性的文本字段的默認

<input type="text" value="" readonly="readonly"> 

提交按鈕應更改爲:

$(function() { 
     $(".makeEditable").click(function() { 
      $('input:text').removeAttr("readonly"); 
     }); 
     $(".makeNonEditable").click(function(e) { 

       // If you submit the for without ajax 
       // then just make the text field default readonly="readonly" 

      // OR 

       // If you submit the form using ajax then use 
       // $('input:text').removeAttr("readonly"); 
       // within success function 
     }); 
    }); 
+0

您也需要將'e'傳遞給函數... – ManseUK 2012-04-18 10:18:52

+0

您已經添加了'e.preventDefault()' - 我的評論告訴您需要將'e'傳遞給函數...僅此而已,沒有什麼少...(你的代碼仍然不工作,雖然...測試它) – ManseUK 2012-04-18 10:25:17

+0

@ManseUK對不起,感謝評論。 – thecodeparadox 2012-04-18 10:26:45

0

我不知道是否是這種情況,但提交類型發送e表格的數據並重新加載頁面。 嘗試使用:

$('#yourForm').submit(function(){ 
    // do something... 
}); 
相關問題