我对 JS/jquery 非常陌生(我是后端开发人员)并且在实现某些东西时遇到了麻烦。我正在使用 Django,并且有一个模板,该模板有一个文本区域,当enter
按下按钮时需要一个提交事件。这是我如何实现的。
<div class="search multi-search">
{% if search_str %}
<textarea name="search_str" id="search_str">{{ search_str }}</textarea>
{% else %}
<textarea name="search_str" id="search_str" placeholder="Search by Lead ID's or email addresses separated by a comma."></textarea>
{% endif %}
<button id="thebutton" type="submit" class="btn btn-icon btn-large btn-inverse"><i class="icon-search"></i></button>
</div>
<script>
// overriding the default enter action to submit the
// search string on enter instead
$('#search_str').keydown(function(e){
// checks to see if the key pressed is the enter key and submit.
// (13 is the code for the enter key)
if (e.which == 13) {
e.preventDefault();
$('#leads_form').submit();
}
})
</script>
此提交填充了一个列表,用户可以在其中选择(通过复选框)一系列项目。有一个操作按钮供他们修改所选项目的详细信息。当他们按下操作按钮时,会弹出一个模式窗口,要求他们提供有关所请求更改的详细信息。这是我的代码。
<div id='give-reason' style="display: none">
<p>Give your reason for this change.</p>
<form>
<input type="text" id="reason">
<button type='button' id='reason-submit'>Submit your reason</button>
</form>
</div>
$('#reason-submit').submit(function(){
var lead_data = gather_lead_status($(this), update_type, true);
var reason = $('#reason').val();
lead_data(reason);
$.fancybox.close();
e.preventDefault();
});
如果我使用并且用户单击提交按钮,这将.click()
非常有效。'#reason-submit'
如果我使用.submit()
它根本不起作用。首先,如果他们单击提交按钮,则不会发生任何操作(不足为奇)。其次,如果他们推动enter
页面刷新 - 所有正在显示的数据都会消失。
关于如何解决这个问题的任何建议?
编辑1:我应该提到我已经尝试使用$(':focus')
但似乎无法让它发挥作用。我可能使用不正确(不足为奇)。
编辑 2:感谢 asifrc 和 niiru,我能够通过以下方式正常工作。
<div class="search multi-search">
{% if search_str %}
<textarea name="search_str" id="search_str">{{ search_str }}</textarea>
{% else %}
<textarea name="search_str" id="search_str" placeholder="Search by Lead ID's or email addresses separated by a comma."></textarea>
{% endif %}
<button id="thebutton" type="submit" class="btn btn-icon btn-large btn-inverse"><i class="icon-search"></i></button>
</div>
<div id='give-reason' style="display: none">
<p>Give your reason for this change.</p>
<form id='reason-submit'>
<input type="text" id="reason">
<button type='submit'>Submit your reason</button>
</form>
</div>
<script>
// overriding the default enter action to submit the
// search string on enter instead
$('#search_str').keydown(function(e){
// checks to see if the key pressed is the enter key and submit.
// (13 is the code for the enter key)
if (e.which == 13) {
e.preventDefault();
$('#leads_form').submit();
}
})
$('#reason-submit').submit(function(e){
e.preventDefault();
var lead_data = gather_lead_status($(this), update_type, true);
var reason = $('#reason').val();
lead_data(reason);
$.fancybox.close();
});
</script>