我正在尝试禁用“提交”按钮,直到某些字段被填满。我发现代码有效,但我的页面中有多个表单,所以我想选择受代码影响的表单...
HTML:
<form id="form_id1">
<fieldset>
<legend>Personal</legend>
Name: <input type="text" size="30" /><br />
Email: <input type="text" size="30" /><br />
Date of birth: <input type="text" size="10" /><br />
Address : <textarea size="30"></textarea><br />
</fieldset>
<input type="submit" value="Submit" />
</form>
<form id="form_id2">
<fieldset>
<legend>Personal</legend>
Name: <input type="text" size="30" /><br />
Email: <input type="text" size="30" /><br />
Date of birth: <input type="text" size="10" /><br />
Address : <textarea size="30"></textarea><br />
</fieldset>
<input type="submit" value="Submit" />
</form>
的javascript:
$(document).ready(function()
{
$('input:submit').attr("disabled", true);
var textCounter = false;
$('input:text, textarea').keyup(check_submit);
function check_submit() {
$('input:text, textarea, select').each(function()
{
if ($(this).val().length == 0) {
textCounter = true;
return false;
}
else {
textCounter = false;
}
});
$('input:submit').attr("disabled", textCounter);
}
});
任何想法? 感谢
好的,使用代码#form_id1输入:在jsfiddle上的所有字段之前提交。但不是在我的页面上...我发现我正在使用tinymce用于textarea字段,这就是问题所在。填写textarea字段后,该按钮未激活!如果我删除tinymce,它的工作原理!有什么想法吗?
我发现tinymce正在使用iframe来显示它的textarea: - ((有没有办法验证它?...
答案 0 :(得分:1)
你可以尝试这个(处理jsFiddle http://jsfiddle.net/Dx6wU/)
$(document).ready(function(){
$('input:submit').attr("disabled", true);
$("input:text, textarea, select").bind("keyup blur", function(){
check_form($(this));
});
function check_form(formField){
var form = formField.closest("form");
var disableButton = false;
$.each(form.find("input:text, textarea, select"), function(){
if($(this).val().length == 0){
disableButton = true;
}
});
form.find("input:submit").attr("disabled", disableButton);
}
});
答案 1 :(得分:0)
如果说$('input:whatever')
,您可以使用$('#form_id1 input:whatever')
。
修改强>
要面对有keyup
事件的TinyMCE问题,您应该向初始化程序添加一些代码:
tinyMCE.init({
...
setup : function(ed) {
ed.onKeyUp.add(function(ed, e) {
check_submit;
});
}
});
将相同的check_submit
函数绑定到TinyMCE提供的onKeyUp
事件。
您可以查看documentation以获取更多参考资料。
答案 2 :(得分:0)
使用$(“#form_id1 * *”)
$('#form_id1 input:text,#form_id1 textarea,#form_id1 select').each(function()
{
if ($(this).val().length == 0) {
textCounter = true;
return false;
}
else {
textCounter = false;
}
});
$('#form_id1 input:submit').attr("disabled", textCounter);
答案 3 :(得分:0)
怎么样
element.parent().attr("id");
其中element是您的按钮对象
答案 4 :(得分:0)
看看这里:http://jsfiddle.net/AVsgH/53/
<强> CODE 强>
$("form").each(function () {
$(this).find('input:text, textarea, select').each(function () {
if ($(this).val().length == 0) {
textCounter = true;
return false;
} else {
textCounter = false;
}
});
$(this).find('input:submit').attr("disabled", textCounter);
});
希望有所帮助
答案 5 :(得分:0)
首先,我会给表格输入按钮指定ID 那么你应该能够使用最接近的jquery:
$('input[id$="yourbtnid"]').closest("form");
答案 6 :(得分:0)
由于keyup事件回调附加到表单元素的后代,您可以选择受代码影响的表单:
$('input:text, textarea').keyup(check_submit);
function check_submit() {
// some code
var $form = $(this).closest('form');
// some code
}
<强> See this demo in action 强>