我的html具有平铺视图,每个平铺都有一些按钮信息。我想检查输入隐藏字段的值,如果值不在数组中,则引发警报。
<div class="box" style="width:30%%">
<div class="boxInner">
<form id="form_myws" method="POST">
<input type="hidden" name="state" value="%s">
<div class="titleBox">
<input type="submit" value="submit" name="ws_butt" id="submit" />
</div>
</form>
</div>
</div>
<script type="text/javascript">
$('#submit').click(function(){
var state_list=["AVAILABLE","IMPAIRED","INOPERABLE",];
var curr_state=$(this).find("input[type='hidden'][name='state']");
console.log(curr_state.val());
if (jQuery.inArray(curr_state.val(),state_list)<0){
alert("submission is allowed only with AVAILABLE,IMPAIRED,INOPERABLE states.");
}
});
它没有产生任何警报。如何实现?
答案 0 :(得分:1)
var curr_state=$(this).find("input[type='hidden'][name='state']");
将其更改为
var curr_state=$(this).closest('form').find("input[type='hidden'][name='state']");
还要添加
return false;
在if语句中,所以它不会提交表单。
答案 1 :(得分:0)
如果你想颠覆submit
,你需要这样做:
$('#submit').click(function(e){
// this:
e.preventDefault();
// more code
// .. or better
return false;
});
您可以在if - &gt;中包含这些回复然后构造,但你需要做一个或另一个,以防止表单提交。如果您没有使用表单,请不要使用submit
!
您还可以像这样访问隐藏的输入值:
$('#form_myws > input[name="state"]').val();
工作片段:
var val = $('#form_myws > input[name="state"]').val();
$('body').append(val);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form_myws">
<input type="hidden" name="state" value="%s">
<div class="titleBox">
<input type="submit" value="submit" name="ws_butt" id="submit" />
</div>
</form>
答案 2 :(得分:0)
在你的情况下:
var curr_state=$(this).find("input[type='hidden'][name='state']");
$(this)
获取您选择的按钮元素,您无法通过find()
找到任何小孩节点所以您应该正确选择隐藏的输入,如:
var curr_state=$($(this).parent()[0]).prev()[0];
或者像这样:
var curr_state=$($(this).parent()[0]).siblings('[name="state"]')[0];