2013-08-28 31 views
1

我正在嘗試使用Jquery來驗證窗體的輸入。最重要的是,如果它們留空,我想自動填充一些字段。 這是我如何着手:在窗體上使用jquery的問題

$(form).submit(function() { 
    var result = true; 
    var timeRegex = /^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])$/; 
    if ($("#newStartTime").val().length == 0) $("#newStartTime").val("00:00"); 
    if (!timeRegex.test($("#newStartTime").val())) { 
     $("#newStartTime").wrap("<div class='error' />"); 
     result = false; 
    } 
    return result; 
}); 

這裏發生的是,輸入被設置爲00:00,但提交被拒絕(與現場包裝成一個錯誤)。如果我重新點擊提交,它工作正常。

我看到的東西的方式,jquery不處理「提交」被調用後所做的修改。 如果是這樣的話,有沒有辦法在不使用「.submit()」的情況下實現我想要的? 如果我錯了,怎麼了?

+1

你的假設是正確的Jquery不會將「提交」被稱爲後所做的修改。 – Okky

+0

不是答案,而是一個醜陋的黑客:你可以通過編程方式點擊提交,就像這樣:'$(「#Submit」).click();'。這裏點擊會發生兩次,但一次通過代碼,另一次通過點擊操作手動。 –

+1

@SreekeshOkky至少我認爲這部分是對的:]你會對第二部分有什麼提示嗎? – fxm

回答

4

您可以在提交按鈕添加事件偵聽器點擊

舉例:

$('#submit_button').click(function() { 
    var newValue = $('#field1_real').val(); 
    $('#field1').val(newValue); 
    $('#form1').submit(); 
}); 
+0

我要堅持這一解決方案,如果我沒有找到切割方式,我應將此標記爲答案。 – fxm

+0

好運fxm;) –

0

關於空白領域,這將是最好有相關的服務器的默認值,而不是JavaScript。它可以在表單發送到瀏覽器時提供默認值,或者當瀏覽器提交表單時如果缺失則應用默認值。

它保留了你的JS的黑客,並且如果JS被禁用,仍然可以工作。

0
$(form).submit(function() { 
. 
. 
. 
}); 

這裏表單的意思是表單的ID?

如果是身份證,嘗試這樣

$('#formId").submit(function() { 
. 
. 
. 
}); 
+0

確實如此。 – fxm