【发布时间】:2013-04-12 00:09:39
【问题描述】:
我正在制作一个网页,显示在表格中搜索某些搜索词的频率。该表上方是 2 个单选按钮,用户可以通过这些按钮选择是否要查看不同的搜索结果或所有结果。
当使用这个javascript时:
$(function() {
$('.distinct_radio').change(function() {
console.log("submit distinct_radio");
this.form.submit();
});
});
它工作正常。我可以一遍又一遍地切换,正确切换表值。但是,如果我使用这个 javascript:
$(function() {
$('.distinct_radio').change(function() {
console.log("submit distinct_radio");
$('form#searchTermForm').submit();
});
});
表单定义为
<form id="searchTermForm" action="/searchterms.php" method="POST">
<div class="configDiv">
<input name="distinct" id="radio-choice-v-2a" class="distinct_radio" value="false" <?php if (strcmp($distinct, "false") == 0) {echo "checked=\"checked\"";}?> type="radio">
<label for="radio-choice-v-2a">Show total number of searches.</label>
<input name="distinct" id="radio-choice-v-2b" class="distinct_radio" value="true" <?php if (strcmp($distinct, "true") == 0) {echo "checked=\"checked\"";}?> type="radio">
<label for="radio-choice-v-2b">Show number of different people</label>
</div>
</form>
一些相关的php:
<?php
if(isset($_POST['distinct'])){
$distinct = $_POST['distinct'];
} else {
$distinct = "false";
}
?>
我正在使用的Javascript:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/custom.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
将此更新到 jquery mobile 1.3.1 并不能解决问题。
第一次单击单选按钮时效果很好。之后,就完全没有反应了。如果我手动刷新页面,它会再次工作一次。
使用第一个脚本,消息“submit distinct_radio”会打印在控制台上,并且控制台会被提交本身清除。
使用第二个脚本,消息“submit distinct_radio”会打印在控制台上,但不会清除控制台。它打印该消息,并完成 POST 请求。但是,POST 请求确实完成了,并且网页已正确更新。再次单击不会导致在控制台打印任何消息,也不会完成任何请求。
使用第二个脚本,如果我将“操作”之后的路径更改为某个不存在的路径,则每次单击都会打印一条控制台消息,并伴随着对不存在的位置执行 POST 请求的新尝试。
我在 FireFox、Chrome 和 Opera 中遇到了这个问题。
除了好奇之外,我想在用户单击表头进行排序时使用它来提交表单。从那里,我不能使用“this.form.submit();”
如何解释这种行为?
编辑:
感谢@peddle(请参阅下面的答案): 在 Jquery Mobile 中似乎有些问题。删除对 jquery.mobile-1.3.0.min.js 的引用使其一遍又一遍地工作(因此非常难看)。 Javascript 参考就像 http://jquerymobile.com/blog/2013/04/10/announcing-jquery-mobile-1-3-1/ 建议的那样,所以 jqm 1.3.1 和 jquery 1.9.1 是为了合作。
【问题讨论】:
-
你试过了吗:
$('#searchTermForm').submit(); -
是的,但没有区别。
-
能否发一些相关的html代码
-
我认为它工作正常? jsfiddle.net/f5Xxq/1
-
您是否会在多个浏览器中获得相同的行为?
标签: javascript jquery jquery-mobile onclick form-submit