2010-11-06 61 views
1

努力讓自己在形式驗證沒有<form>標籤。jQuery的.submit()

其CMS插件,它使用了AJAX,不知道爲什麼輸入不能與<form></form>包裹的結構。

HTML:

<div class="feedback"> 
    <input id="name" type="text" name="ajax-name" value="Your name" /> 
    <input id="mail" type="text" name="ajax-mail" value="Your e-mail" /> 
    <button type="submit" id="done">Send</button> 
</div> 

JS:

$(".feedback #done").click(function() { 
    var flag = true; 
    if (!$("#name").val()){ 
     $("#name").addClass('error'); 
     flag = false; 
    } 
    if (flag == true) 
     $(".feedback").submit(); 
}); 

此代碼不能正常工作。

我如何在表單驗證,無<form>標籤?

阿賈克斯不知道這個驗證。

謝謝。

回答

2

不是

if (flag == true) 
    $(".feedback").submit(); 

return flag; 

您不能提交沒有<form>,但你可以阻止或允許的點擊()甚至完成。以下是完整的代碼:

$(".feedback #done").click(function() { 
    var flag = true; 
    if (!$("#name").val()){ 
     $("#name").addClass('error'); 
     flag = false; 
    } 

    //return the value of flag instead of working with submit() 
    return flag; 
}); 

如果點擊事件返回false,則應該阻止點擊繼續。您的標誌變量將爲真或假,具體取決於驗證如何進行,以便確定過程是否向前移動。

+0

對不起,我不明白。請給出更詳細的答案。 – James 2010-11-06 18:35:10

+0

更清楚了嗎?我希望如此,這是我所有:) – 2010-11-06 18:45:27

+0

好吧,現在它清晰。謝謝! – James 2010-11-06 18:48:05

0

獲得完成工作的另一種方式,包裹的.feedback所有子節點與<form >標籤,然後在<form id="someid">

$(function() { 
    $('.feedback').children().wrapAll('<form id="form" />'); 
    $('.feedback #done').click(function() { 
     var flag = true; 
     if (!$("#name").val()) { 
      $("#name").addClass('error'); 
      flag = false; 
     } 
     if (flag) { 
      $("#form").submit(); 
      return false; 
     } 
    }); 
}); 
0

@edit執行.submit(),所以我實際上讀的問題,並即使它是舊本似乎仍然相關...

只是延長與是否使用jQuery 1.7 .change()或.bind()或。對()提交按鈕。 e.preventDefault()可能與ajax處理程序一起使用?鏈拉扎勒炫解除綁定功能,像這樣:

var some_flag_bool = false; 
$('#done').click(function (e) { 
    e.preventDefault(); 
    some_flag_bool = true; 
    $(this).unbind('#done').submit(); 
    //return might be considered optional 
    return this.some_flag_bool; 
}); 

或類似這樣的東西在jQuery的1.7嘗試和catch事早:

function validation() { if (!foo) { throw new Error("oh noz!"); } 
$('body').on('change', 'input', function() { validation(); }); 

可以$ .attr( '禁用', '禁用' )當文檔準備就緒時按鈕,然後在驗證方法中使用$ .removeAttr('disabled')

但是如果是我,我只需從我的ajax處理程序調用驗證方法或使用jQuery.validation插件。