<form accept-charset="UTF-8" action="/twitts" class="dialog " id="twitt-form" method="post" title="Dialog" selected="true">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓">
<input name="authenticity_token" type="hidden" value="BkLNJsJfbEzfQrCTDWHW4OvvOh0l2pLPxxEJ/bGt2IY="></div>
<input id="anonymous_id" name="anonymous[id]" type="hidden" value="22">
<fieldset>
<h1>Отправить сообщение</h1>
<a class="button leftButton" type="cancel">Отмена</a>
<a id="submit-twitt" class="button blueButton">Отправить</a>
<!-- <input class="button blueButton" id="submit-twitt" name="commit" type="submit" value="Отправить" /> -->
<input id="twitt-text" name="twitt[text]" size="30" type="text">
</fieldset>
<div class="spinner"></div>
</form>
当我打电话时
$('#twitt-form').submit();
在调试器或内部单击事件处理程序中,什么也没发生。即使将 .submit 处理程序设置为表单
$('#twitt-form').submit(function() {
$('#twitt-text').val('');
$('#twitt-form').attr('selected', false);
return false;
});
处理程序确实有效,但表单不提交任何数据。为什么?
还有更多:当我在表单字段上按 Enter 时#twitt-text
表单只需提交好,.submit 处理程序也可以工作。
$('#twitt-form').submit(function() {
$('#twitt-text').val(''); <--- this it will make form value empty
$('#twitt-form').attr('selected', false);
return false;
});
为什么你使用返回假没有任何条件。
return false;
是防止默认表单操作。这就是表单未提交的原因。
我在这段代码中看到三个问题,其中两个现在已经提出来了:
- 在您的提交函数中,第一行将清除输入文本字段,因此即使它提交,它也不会提交任何内容。
- 第二件事是
#twitt-form
是表单本身,因此它没有selected
属性。 - 提交的表格将被取消,使用
return false;
。
现在,如果您试图通过 AJAX 提交表单来阻止页面转到任何地方,以下是您可以执行的操作的示例:
$('#twitt-form').submit(function(e) {
$.ajax({
url: $(this).attr('action'),
data: $(this).serialize(),
type: $(this).attr('method'),
success: function(dataFromTheServer) {
// do whatever
}
});
$('#twitt-text').val('');
e.preventDefault();
return false;
});
但除此之外,我不确定你在这里想做什么。