当我在ajax成功点击提交按钮时,我遇到了浏览器阻止我的提交表单(在新标签中提交)的问题。
首先:我使用ajax将我的文本翻译成中文并将结果放到此表单的文本字段中。在Ajax的成功函数中,我把$(“我的提交按钮”)。click()。然后我的表单没有提交,因为浏览器阻止了它:
这是我的表格:
<?php
$catnews = CatNews::model()->findAll();
echo CHtml::beginForm(['site/timkiemtaobao'], 'post', ['target' => '_blank']) . CHtml::textField('txtkeyword', '', ['placeholder' => 'Nhập theo sản phẩm, danh mục, hay nhãn hiệu tìm kiếm', 'class' => 'xx'])
. CHtml::link('<img src="images/source/search.png">', 'javascript:void(0)', ['class' => 'btntim', 'id' => 'btntimkiem'])
. CHtml::dropDownList('search', '', CHtml::listData($catnews, 'id', 'name'), ['class' => 'searchdrop']) ?>
<div class="clearfix"></div>
<?php echo CHtml::textField('stringtimkiem', "", ['class' => 'hidden']) . CHtml::button('1', ['class' => 'hidden', 'id' => 'subbtn']) . CHtml::endForm(); ?>
这是我的js:
$(document).on('click', '#btntimkiem', function() { // this for translate to chinese
if ($("#txtkeyword").val() != '') {
var c = $("#txtkeyword").val();
$.ajax({
url: "https://translate.yandex.net/api/v1.5/tr.json/translate?key=myapikey",
type: 'get',
dataType: 'json',
async: false,
data: {
text: c,
lang: "vi-zh"
},
beforeSend: function() {
$("#txtkeyword").attr('disabled', 'disabled');
$("#btntimkiem").attr('disabled', 'disabled');
},
success: function(data) {
console.log(data.text[0]);
$("#stringtimkiem").val(data.text[0]);
$("#subbtn").attr('type', 'submit').click().removeAttr('type');
}
});
$("#txtkeyword").removeAttr('disabled');
$("#btntimkiem").removeAttr('disabled');
}
});
所以我很累,因为我试图修复它2天但没有修复。 我期待着你的帮助。非常感谢。
答案 0 :(得分:0)
我希望您的处理程序和您的ajax都不会被执行,并且表单正在作为普通表单执行。您可以通过添加console.log
语句并在浏览器的开发人员工具中检查网络活动来检查这一点。
您需要为表单添加id
,例如:
CHtml::beginForm(['site/timkiemtaobao'], 'post', ['id' => 'btntimkiem'])
答案 1 :(得分:0)
如果它出现在新标签中,请尝试将代码放入$(document).ready(); 我强烈建议你不要使用async false flag。做它是异步,然后
complete: $("#txtkeyword").removeAttr('disabled');
$("#btntimkiem").removeAttr('disabled');