提交表单时,我正在尝试doSomething()代替默认的帖子行为.
显然在React中,onSubmit是表单支持的事件.但是,当我尝试以下代码时:
var OnSubmitTest = React.createClass({
render: function() {
doSomething = function(){
alert('it works!');
}
return <form onSubmit={doSomething}>
<button>Click me</button>
</form>;
}
});
Run Code Online (Sandbox Code Playgroud)
该方法doSomething()运行,但此后,仍然执行默认的后期行为.
你可以在我的jsfiddle中测试这个.
我的问题:如何防止默认的帖子行为?
我需要测试一个表单的值是否onsubmit是一个函数.格式通常是onsubmit="return valid();".有没有办法判断这是否是一个函数,如果它是可调用的?使用typeof只返回它是一个字符串,这对我没有多大帮助.
编辑:当然,我明白"返回有效();" 是一个字符串.我把replace它归结为"valid();",甚至是"valid()".我想知道其中任何一个是否是一个功能.
编辑:这里有一些代码,可能有助于解释我的问题:
$("a.button").parents("form").submit(function() {
var submit_function = $("a.button").parents("form").attr("onsubmit");
if ( submit_function && typeof( submit_function.replace(/return /,"") ) == 'function' ) {
return eval(submit_function.replace(/return /,""));
} else {
alert("onSubmit is not a function.\n\nIs the script included?"); return false;
}
} );
Run Code Online (Sandbox Code Playgroud)
编辑2:这是新代码.似乎我仍然需要使用eval,因为调用form.submit()不会触发现有的onsubmits.
var formObj = $("a.button").parents("form");
formObj.submit(function() {
if ( formObj[0].onsubmit && typeof( formObj.onsubmit ) == 'function' ) {
return eval(formObj.attr("onsubmit").replace(/return /,""));
} else {
alert("onSubmit is not a function.\n\nIs …Run Code Online (Sandbox Code Playgroud) 我想在一些文本框条目上运行javascript用户验证.
我遇到的问题是我的表单有进入我们网站内新页面的操作,该onsubmit属性从不运行javascript函数.
是否有更好的解决方案,或使用以下代码的解决方案:注意:javascript文件写得正确,并且如果您将操作切换到,则有效checkRegistration().
这只是运行动作和javascript的问题.
<form name="registerForm" action="validate.html" onsubmit="checkRegistration()" method="post">
<!-- textboxes here -->
<!-- and submit button -->
</form>
Run Code Online (Sandbox Code Playgroud) 我有以下内容:
<script type="text/javascript">
function CancelFormButton(button) {
$(button.form).submit();
}
</script>
<form onsubmit="alert('here');">
<input type="button" value="Cancel" onClick="CancelFormButton(this);" />
</form>
Run Code Online (Sandbox Code Playgroud)
单击"取消"按钮时,不会触发表单标记中的onsubmit.
该行成功提交表单:$(button.form).submit();但跳过alert('here');表单标记中的onsubmit.
这是正确的还是我做错了什么?
顺便说一句,在这种情况下,我想要这个功能,但我只是想知道我是否会在触发onsubmit的浏览器中遇到问题.
我有一个包含很多表单的页面,用户将在该页面上选择一些内容.当用户这样做时,我需要将该元素放在其他地方,就像购物车一样.但我似乎无法获得超过页面上第一个实际按预期工作的表单.我尝试过多种方法:
$('#something')没有捕获它,因为它不匹配.所以我在想我会怎么做.我只需要从页面上提交的表单中接收数据.如上所述,我可以给他们所有类型的前缀,就像我现在一样,但后来我不知道如何匹配它.
帮助会非常受欢迎!
一些代码按要求(当然只是一个显示我的意思的例子):
HTML:
<form id="something-0"><input type="hidden" value="0"><input type="submit"></form>
<form id="something-1"><input type="hidden" value="1"><input type="submit"></form>
Run Code Online (Sandbox Code Playgroud)
jQuery:
$("#something-%").submit(function(e) {
e.preventDefault();
$("#some-span").html(data);
});
Run Code Online (Sandbox Code Playgroud)
我希望#something-%接受" - "之后的任何内容,我希望你理解.
我想在点击链接后提交React表单.
为此,我需要以编程方式提交表单,如果单击该链接.
我的问题是:onSubmit表单提交后没有触发处理程序.
这是我为此目的剪辑的代码:
var MyForm = React.createClass({
handleSubmit: function(e){
console.log('Form submited');
e.preventDefault();
},
submitForm : function(e){
this.refs.formToSubmit.submit();
},
render: function() {
return (
<form ref="formToSubmit" onSubmit={this.handleSubmit}>
<input name='myInput'/>
<a onClick={this.submitForm}>Validate</a>
</form>);
}
});
ReactDOM.render(
<MyForm name="World" />,
document.getElementById('container')
);
Run Code Online (Sandbox Code Playgroud)
在handleSubmit不调用并执行默认行为(提交表格).这是一个ReactJs错误还是正常行为?有没有办法调用onSubmit处理程序?
我想知道如何在提交时启用禁用的表单文本字段.此外,我想确保用户是否返回表单或单击重置字段将再次显示为已禁用.
我试着用
document.pizza.field07.disabled = false ;
Run Code Online (Sandbox Code Playgroud)
它会禁用该字段,通过单击重置或按下后退按钮仍然保持启用.
请指导.
由于Safari(7.0.1/Mac OS),我正在努力解决一个简单的Javascript问题.我提交了一个表单,我希望在页面加载期间显示一个图标.
从我所看到的,它与javascript本身无关,而是与onsubmit行为有关(如果我将它移到函数之外,它在加载页面而不是"提交"时间时执行预期的工作).
这是我的代码(在Chrome和Firefox上完美运行).任何的想法?
<html>
<body>
<img id="loadingImage" src="assets/images/loadingIcon.png" style="display:none;"/>
<form method="POST" action="js.php" onsubmit="loadLoader()">
<input type="submit" value="Go"/>
</form>
<script type="text/javascript">
function loadLoader(){
document.getElementById('loadingImage').style.display = 'block';
return true;
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我完全糊涂了...我发誓这是昨天工作的......我今天早上醒来,我的所有表格停止在我的项目中工作.
所有表单都有一个"onsubmit"函数返回false,因为它是一个ajax调用,所以表单永远不会发送.
经过大量测试后,我将问题简化为这段代码:
<html>
<head>
<script type="text/javascript">
function sub()
{
alert ("MIC!");
return false;
}
</script>
</head>
<body>
<form method = "post" id = "form1" onsubmit = "return sub()">
input: <input type="text" name="input1" >
<a href="#" onClick="document.getElementById('form1').submit();">button</a>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我会发誓,这种方法很完美,但今天也不起作用:D
为什么我按下表格发送的按钮?
我知道这是一个全新的问题,但我被困住了
谢谢 !
提交的@mplungjan onclick就是一个按钮; 表格onsubmit显然更好.
哪个是使用提交按钮的onclick来确定是否应该提交表单的原因?
我坚信这一点
我正在寻找有理由倾向于在表单的onsubmit上使用提交按钮的onclick事件.
更新:请注意,我个人非常了解表单提交和验证方面的许多问题.
例如,通过javascript提交不会触发onsubmit
http://jsfiddle.net/mplungjan/3A4Ha/
<form onsubmit="alert('onSubmit called')">
<input type="text" value="This will submit on enter but in IE the onclick is not triggered" style="width:100%"/><br/>
<input type="submit" onclick="alert('Clicked')" />
</form><br />
<a href="#" onclick="alert('Submitting by script'); return false">Submit by script will not trigger onsubmit</a>
Run Code Online (Sandbox Code Playgroud)
如果你在我的小提琴中点击输入,IE也不会触发onclick
历史:
在这里进行讨论
我非常不喜欢使用任何提交按钮的onclick,因为很多1年后看到它在许多浏览器中都不起作用,主要是旧版本的IE.我列举了一些显而易见的原因,但我相信他们不会说服强硬的用户.
SO的社区可以帮助我把这个钉在墙上,就像钉在学校里一样吗?也可以随意评论如何以可接受的方式表达这个问题.
1:自NS2.x和IE3.02以来的日子
onsubmit ×10
javascript ×6
forms ×5
html ×2
jquery ×2
reactjs ×2
action ×1
form-submit ×1
html5 ×1
onclick ×1
return ×1
safari ×1
typeof ×1
validation ×1