我想根据myform中隐藏输入的值执行if语句。
场景是我有一个由测试组成的表。每个测试基本上都是它自己的形式。如果测试附加了密码,隐藏输入基本上包含'YES'。我想提示用户输入密码,如果他们尝试执行特定测试时提交密码(提交表单)。
所以这是我正在尝试的代码:
$("#submit").live('click', function(event) {
if ($(this).parent().find(':input:hidden[name=has_password]').val() == 'YES') {
$('.messagepop').remove();
$(this).parent().append('<div class="messagepop pop"><p><label for="password">Enter test password</label><input type="text" size="30" name="pass" id="pass" /></p><p><input type="button" id="submitPass" value="GO" id="pass_submit"/> or <a class="close" href="/">Cancel</a></p></div>');
$(".pop").slideFadeToggle(function() {
$("#pass").focus();
});
return false;
}
});
没有if语句代码可以工作:在单击表单中的特定按钮时,会弹出另一个小密码输入表单。但是,如果隐藏输入的值为“YES”,我只希望弹出表单。
我已检查隐藏输入中是否存在值。
我想我正在使用jQuery略有错误,因为我是初学者。那么有人可以找出更好的方法来执行检查吗?
非常感谢,
编辑(jsfiddle with html等):
答案 0 :(得分:2)
您的HTML格式错误。 <tr>
和<form>
结束标记不匹配,您在<form>
内直接有一个<tr>
标记,这是不允许的,您还没有自我关闭您的<input />
代码,并且您在同一页面上有重复的ID。
<tr>
<form name='myform' method='post' action='test_sim.php'>
<input name='test' type='hidden' value='1'>
<input type='hidden' name='has_password' value='NO'>
<td>TEST 1</td>
<td>B352</td>
<td>10</td>
<td>2011-05-12 06:00:00</td>
<td>2011-05-12 12:00:00</td>
<td>06:00:00</td>
<td><input id='submit' type='button' value='execute test'></td>
</tr>
</form>
应该是这样的:
<tr>
<td>TEST 1</td>
<td>B352</td>
<td>10</td>
<td>2011-05-12 06:00:00</td>
<td>2011-05-12 12:00:00</td>
<td>06:00:00</td>
<td>
<form name='myform' method='post' action='test_sim.php'>
<input name='test' type='hidden' value='1' />
<input type='hidden' name='has_password' value='NO' />
<input class='submit' type='button' value='execute test' />
</form>
</td>
</tr>
修复HTML可以解决您的问题:http://jsfiddle.net/brianpeiris/ezFgU/16/
您应该使用W3C Validator tool检查HTML,以便防止出现这类问题。
编辑:正如mcgrailm所提到的,您的id
属性是重复的。看来,jQuery在这里是宽容的,这就是上面的jsFiddle工作的原因。您应该使用类来标识提交按钮,并使用相应的$('.submit')
选择器来附加单击处理程序。
答案 1 :(得分:1)
我相信
if ($(this).parent().find(':input:hidden[name=has_password]').val() == 'YES')
应该是
if ($(this).parent().find('input[name=has_password]:hidden').val() == 'YES')
答案 2 :(得分:1)
我认为你的选择器不正确试试这个
$("#submit").live('click', function(event) {
if ($(this).parent().find('input[name="has_password"]:hidden').val() == 'YES') {
$('.messagepop').remove();
$(this).parent().append('<div class="messagepop pop"><p><label for="password">Enter test password</label><input type="text" size="30" name="pass" id="pass" /></p><p><input type="button" id="submitPass" value="GO" id="pass_submit"/> or <a class="close" href="/">Cancel</a></p></div>');
$(".pop").slideFadeToggle(function() {
$("#pass").focus();
});
return false;
}
});