2010-08-06 64 views
2

是否有一种“简单”的方法来确保表单中的所有输入都有“入口”。我需要/想要禁用提交按钮,除非所有输入都有一个值,它们都是input type = text。我认为它是每个类似的东西,但我不是很擅长JQuery中的每一个。可能的问题是输入是由可排序的“动态”生成的?我需要知道的是每个输入字段中都有一个值。 “真正的”验证在其他地方完成。jquery表单:输入

因此,它是这样的:

$j('#button').click(function(){ 
each(function(:input){ 
//check the length in here? 
}); 
}); 

回答

1
$("#button").click(function(event) { 
    var valid = true; 
    $(":input").each(function(index) { 
     if ($(this).val().length == 0) { 
      valid = false; 
     } 
    }); 
    if (!valid) { 
     event.preventDefault(); 
    } 
}); 

应该工作。

第一部分抓取元素idbutton,然后给onclick事件分配一个函数。第二部分抓取所有输入字段,并在其中的每一个上运行一个函数。然后你得到每个值的长度。

$(this)可以工作,因为该功能正在应用于页面上的特定元素,并且将始终为您提供当前元素。

+0

嗨Slokun,正如你所说的“应该工作”可能是“适当”的Jquery,但我无法得到它 - 完全工作。我尝试了一些事情/变化,但我使用if(!有效),然后整个页面刷新等的时刻我不能从if(!valid){alert('this')} else {alert('那')}我总是得到“虚假”的说法。第一部分,即每个功能的作品我知道,将继续玩...谢谢 – user351657 2010-08-06 14:59:42

+0

哦,不得不改变为$ j(“#tstform:input [type ='text']”)。each(function(index){。 ..因为它的方式为页面上的“每个”形式开火 – user351657 2010-08-06 15:00:33

+0

@russp那么,它是否适用于不同的选择器?是的,如果你没有指定输入的形式,它将抓住页面上的所有内容。 – Tarka 2010-08-09 13:47:31