我有一个以下格式的结构,我在Bootstrap模式中显示。
<div>
<input type="text"/>
<input type="text"/>
<button class="jSomeButton" onclick="javascript: return false;"></button>
<!--Click event handled in Javascript code-->
</div>
$(function(){
$(".jSomeButton").on('click',function(){
//Called from Firefox, Chrome and IE
//Not called from Safari
});
});
在Firefox,Chrome和IE中,当我填写输入后按Enter / Return键时,触发按钮点击 但在Safari [v4.0.3]中,它不会触发按钮点击!相反,它似乎回发到同一页面。
这是Safari中的已知问题吗?
如果是,任何解决方法?
如果不是,有人可以帮我解决根本问题吗?
P.S。 :
1.我熟悉用于触发按钮点击Enter按键事件的Javascript代码。只是好奇为什么以上在Safari中只能
2.只是为了澄清,当我仍然在输入控件上时按Enter键而不是按Tab键首先对焦于按钮,然后按Enter键。
答案 0 :(得分:3)
将输入字段和按钮添加到表单。
尝试使用此功能,但我不确定这是正确的方法。 在这种情况下,您最好将两个js侦听器函数添加到输入字段。如
`
<div>
<input id="one" type="text"/>
<input id="two" type="text"/>
<button class="jSomeButton" onclick="javascript: return false;"> </button>
<!--Click event handled in Javascript code-->
</div>
$('#one').keypress(function(e){
if(e.which == 13) {
//call your code
}
});
$('#two').keypress(function(e){
if(e.which == 13) {
///call your code
}
});
最好为三个监听器写一个用于按钮,另外两个用于两个输入文件。希望这生病帮助你。我不确定这个解决方案。尝试后请告诉我。
答案 1 :(得分:0)
而不是类属性使用id属性onclick事件,
<div>
<input type="text"/>
<input type="text"/>
<button class="jSomeButton" id="jSomeButton" onclick="javascript: return false;"></button>
<!--Click event handled in Javascript code-->
</div>
$(function(){
$("#jSomeButton").on('click',function(){
//Called from Firefox, Chrome and IE
//Not called from Safari
});
});
如果您不想添加ID
delegate
事件document
,那么事件将适用于定义了类的DOM
。
示例强>
<script type="text/javascript">
$(function(){
$(document).on('click', ".jSomeButton" ,function(){
alert('works');
});
});
</script>
答案 2 :(得分:0)
@Vandesh,
正如评论中所述,我建议您在整个表单周围添加一个表单标记。 看看这个JSFiddle更多的想法。
我在Safari,Chrome,IE6 +,Opera和Firefox 22 +上试过这个。
如果您遇到其他麻烦,请告诉我。
以下是代码:
<div>
<form>
<input type="text"/>
<input type="text"/>
<button class="jSomeButton" onclick="javascript: return false;">Send</button>
</form>
</div>