2014-12-09 85 views
0

我在页面上有许多类似的窗体,由PHP while循环创建。每个表格都有大约10个文本输入和一个提交按钮。如果(就这个问题而言)表单被称为A,B,C和D,当A上的其中一个输入焦点时,我想禁用B,C和D上的提交按钮。对于其他形式也是如此。禁用几个提交按钮,只剩下一个启用(jQuery)

我的想法是做两行jQuery。第一行将禁用所有提交按钮。第二行将重新启用专注于输入的那一行。我可以做的第一部分,但我坚持第二部分。

每种形式的

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" name="changeform"> 

每个提交按钮是

<input name="changebutton" type="submit" value="Change"> 

然后我的脚本

$("input").focus(function(){ 
$('input[name="changebutton"]').prop('disabled', true); 
$(this).closest('form').find('input[name="changebutton"]').prop('disabled', false); 
}); 

2号线工作正常(所有的按钮被禁用),但行3什么都不做。

我已经尝试使用第3行放在一个大的红色边框(所以我可以看到页面的哪一部分正在受到影响),没有任何显示。

我尝试过使用.closest('table')。find('td')并且工作正常。所以看起来好像这个/最接近/找到位的东西不能正常工作。

+1

你能给你完整的HTML结构吗?如果我把它放在小提琴中它工作正常: http://jsfiddle.net/frv47vk7/ – Jeroen 2014-12-09 11:28:27

+0

你的代码似乎对我来说很好。它的工作。 – 2014-12-09 11:28:59

+0

问题出在页面上的其他地方。现在我的原始解决方案和Mangesh Parte的工作。表单标签和表结构之间存在冲突。 感谢你们不厌其烦地看着它。 – TrapezeArtist 2014-12-09 12:49:29

回答

0

您可以在这里使用parents()函数。 试试这个:JSFIDDLE

$("input").focus(function(){ 
    $('input[name="changebutton"]').prop('disabled', true); 
    $(this).parents('form').find('input[name="changebutton"]').prop('disabled', false); 
});