使用jQuery,我如何获得具有插入符号(光标)焦点的输入元素?
或者换句话说,如何确定输入是否具有插入符号的焦点?
我.submit()为表单提交设置了一个事件.我在页面上也有多个表单,但这个例子只有一个.我想知道在没有.click()向每个提交事件应用的情况下点击了哪个提交按钮.
这是设置:
<html>
<head>
<title>jQuery research: forms</title>
<script type='text/javascript' src='../jquery-1.5.2.min.js'></script>
<script type='text/javascript' language='javascript'>
$(document).ready(function(){
$('form[name="testform"]').submit( function(event){ process_form_submission(event); } );
});
function process_form_submission( event ) {
event.preventDefault();
//var target = $(event.target);
var me = event.currentTarget;
var data = me.data.value;
var which_button = '?'; // <-- this is what I want to know
alert( 'data: ' + data + ', button: ' + which_button );
}
</script>
</head>
<body>
<h2>Here's my form:</h2>
<form action='nothing' method='post' name='testform'>
<input type='hidden' …Run Code Online (Sandbox Code Playgroud) 我有一个带有两个提交按钮和一些代码的表单:
HTML:
<input type="submit" name="save" value="Save" />
<input type="submit" name="saveAndAdd" value="Save and add another" />
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
form.onSubmit = function(evnt) {
// Do some asyncrhnous stuff, that will later on submit the form
return false;
}
Run Code Online (Sandbox Code Playgroud)
当然,这两个提交按钮可以完成不同的事情.有没有办法找出onSubmit按下哪个按钮,所以稍后我可以提交thatButton.click()?
理想情况下,我不想修改按钮的代码,只是有一个具有此行为的纯javascript插件.
我知道FF有,evnt.explicitOriginalTarget但我找不到其他浏览器的东西.
我正在从我没写的PHP应用程序中获取一些表单.为此,我提出了这个聪明的解决方案:
jQuery("form").submit(function(event) {
// get some values from elements on the page:
var the_form = jQuery(this);
var data = the_form.serialize();
var url = the_form.attr( 'action' );
var button = event.originalEvent.explicitOriginalTarget;
data = data + "&" + button.name + "=" + button.value;
// Send the data using post and put the results in a div
jQuery.post( url, data, function() {
//Do something crazy
});
// stop form from submitting normally
if (event.preventDefault)
{
event.preventDefault();
}
else
{
event.returnValue = false;
} …Run Code Online (Sandbox Code Playgroud) <form onsubmit="return confirm('Are you sure you want to rollback deletion of candidate table?')">
<input type='submit' name='delete' value='Undo' />
<input type='submit' name='no' value='No' />
Run Code Online (Sandbox Code Playgroud)
当用户点击第二个提交按钮时,即No我想将确认对话框显示为"您确定要提交交易吗".
我正在尝试找到一种跨浏览器兼容的方法,以挑选在具有两个不同提交按钮的表单提交过程中单击的按钮的id属性。我可以使用以下代码为FireFox完成此操作,但由于它们不支持explicitOriginalTarget,因此无法在IE 8或Chrome中运行。
$("#postForm, #dialogPostForm, #pastPostForm").live('submit', function(event) {
event.preventDefault();
if (event.originalEvent.explicitOriginalTarget.id === 'pastPosts'){
...SNIP...
Run Code Online (Sandbox Code Playgroud)
有人可以建议使用兼容跨浏览器的方法吗?
更新我尝试使用“ 如何获取导致表单提交事件中的提交的按钮”中的答案?,但我想使用.live jquery方法并使用事件对象选择原始输入的提交ID。
更新这是我试图从中获取原始提交按钮ID的表单:
<form id="postForm" action="{% url account_tracker mashup.pk %}?fuzzy=true" method="post">
<div class="mygoal">Update Your Progress: {{ form.post }}
<input type="submit" value="+ 1" class="formbtn" style="font-size:18px;"/>
<input type="submit" value="This week" style="font-size:18px;" id="pastPosts" class="formbtn"/>
<span id="result" class="results"></span>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
更新我想出了自己的解决方案。添加一个onclick属性,该属性将“名称”属性添加到表单。然后在表单处理中检查表单名称是否为“过去”,并对其进行处理,然后在表单完成处理后删除该属性。据我所知,这适用于所有浏览器。
<input type="submit" value="This week" style="font-size:18px;" id="pastPosts" class="formbtn" onclick="$('#postForm').attr('name', 'past');" />
Run Code Online (Sandbox Code Playgroud) 我正在使用asp.net MVC,当我提交表单时,之前的开发人员已经嵌入了一些jQuery验证.
$('form').submit(function() {
...code done here to validate form fields
});
Run Code Online (Sandbox Code Playgroud)
问题是表单上的"保存"和"取消"按钮都会触发此提交jQuery函数.如果触发"取消"输入按钮,我不想激活验证逻辑(id ="cancel"name ="cancel"value ="cancel").有没有办法在这个提交函数中,我可以检索按下哪个输入按钮提交表单的ID,名称或值?
我有很多表单,如页面上的以下内容.现在我想根据用户点击的提交按钮更改表单操作(当然还要提交表单)
<form action="/shop/products.php" data-ajax="false" method="post">
<div data-role="fieldcontain">
<input name="submit" class="obutn" type="submit" value="Order" />
<input name="submit" class="oEbutn" type="submit" value="Extras" />
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我试过了
$(".obtn").click(function() {
$(this).parent().parent().attr("action", "/shop/products.php");
});
$(".oEbtn").click(function() {
$(this).parent().parent().attr("action", "/shop/extras.php");
});
Run Code Online (Sandbox Code Playgroud)
但表格总是提交到products.php.你能告诉我什么是错的吗?
我有一个带有两个提交按钮的表单,一个叫做'display',另一个叫'disenrol'.显示提交不需要确认,而另一个确实.本来我打算用
onsubmit="return confirm('Are you sure you want to remove the modules?');"
Run Code Online (Sandbox Code Playgroud)
但当然这不起作用,因为它对两个提交都做出了反应.有没有办法可以指定哪些提交应该值得?(我对javascript很新,所以请对我温柔)
谢谢
我有一个带有2个提交按钮的表单.
<form class="myForm">
<!-- Some Inputs Here -->
<input type="submit" name="firstSubmit" value="first submit" />
<input type="submit" name="secondSubmit" value="second submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
我通过JQuery提交此表单.
$(".myForm").submit(function(){
var submitButton = ? //I need to catch the submit button that was clicked
});
Run Code Online (Sandbox Code Playgroud)
我怎么知道点击了哪个提交按钮?
我有一个表单,在输入文本框中我输入一个数字,然后按ENTER键,我使用jQuery将值附加到textarea.一切正常.
我遇到的问题是,如果我添加一个提交按钮来提交表单,只要我按下ENTER,它就会提交表单.
我想要它做的不是在按Enter键时提交表单,而是仅在单击提交按钮时提交表单.
我尝试过使用preventDefault()并返回false,这将停止按Enter键提交表单,但如果我在提交按钮上添加一个click事件来提交表单,它什么都不做.我在提交之前在点击功能中发出警报,但是火灾但表格没有提交
<form id="toteform" method="post" action="blah.php">
<input type="text" name="bin" id="bin" maxlength="4" autocomplete="off" />
<input type="text" name="totes" id="tote" maxlength="4" autocomplete="off" />
<input type="button" name="submit" class="submit" id="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
jQuery的
$("#submit").click(function() {
$('#toteform').submit();
});
$('#bin').focus();
$('#bin').keypress(function(e) {
if(e.which == 13) {
$('#tote').focus();
}
});
$('#tote').keypress(function(e) {
if(e.which == 13) {
// more code here to do other things
Run Code Online (Sandbox Code Playgroud)