gpt4 book ai didi

jQuery:清除表单输入

转载 作者:行者123 更新时间:2023-12-03 21:25:12 25 4
gpt4 key购买 nike

我尝试了不同的方法来清除表单:

<form action="service.php" id="addRunner" name="addRunner" method="post">
First Name: <input type="text" name="txtFirstName" id="txtFirstName" /><br />
Last Name: <input type="text" name="txtLastName" id="txtLastName" /><br />
Gender: <select id="ddlGender" name="ddlGender"><option value="">--Please Select--</option>
<option value="f">Female</option>
<option value="m">Male</option>
</select><br />
Finish Time:
<input type="text" name="txtMinutes" id="txtMinutes" size="10" maxlength="2">(Minutes)
<input type="text" name="txtSeconds" id="txtSeconds" size="10" maxlength="2">(Seconds)
<br />
<button type="submit" name="btnSave" id="btnSave">Add Runner</button>
<input type="hidden" name="action" value="addRunner" id="action">
</form>

jQuery #1:

function clearInputs(){
$("#txtFirstName").val('');
$("#txtLastName").val('');
$("#ddlGender").val('');
$("#txtMinutes").val('');
$("#txtSeconds").val('');
}

这非常有效。

jQuery #2:

function clearInputs(data){
$("#addRunner :input").each(function(){
$(this).val('');
});

这会清除表单,但不允许我再向其提交任何信息。我尝试再次单击该按钮,但没有任何反应。

这是按钮点击处理程序:

$("#btnSave").click(function(){
var data = $("#addRunner :input").serializeArray();
$.post($("#addRunner").attr('action'), data, function(json){
if (json.status == "fail"){
alert(json.message);
}
if (json.status == "success"){
alert(json.message);
clearInputs();
}
}, "json");
});

PHP 邮政编码:

<?php
if($_POST){
if ($_POST['action'] == 'addRunner') {
$fname = htmlspecialchars($_POST['txtFirstName']);
$lname = htmlspecialchars($_POST['txtLastName']);
$gender = htmlspecialchars($_POST['ddlGender']);
$minutes = htmlspecialchars($_POST['txtMinutes']);
$seconds = htmlspecialchars($_POST['txtSeconds']);
if(preg_match('/[^\w\s]/i', $fname) || preg_match('/[^\w\s]/i', $lname)) {
fail('Invalid name provided.');
}
if( empty($fname) || empty($lname) ) {
fail('Please enter a first and last name.');
}
if( empty($gender) ) {
fail('Please select a gender.');
}
if( empty($minutes) || empty($seconds) ) {
fail('Please enter minutes and seconds.');
}
$time = $minutes.":".$seconds;

$query = "INSERT INTO runners SET first_name='$fname', last_name='$lname', gender='$gender', finish_time='$time'";
$result = db_connection($query);

if ($result) {
$msg = "Runner: ".$fname." ".$lname." added successfully" ;
success($msg);
} else {
fail('Insert failed.');
}
exit;
}

}

如果我使用 jQuery 方法 #2,我会在控制台中收到此错误:

Uncaught TypeError: Cannot read property 'status' of null

为什么会发生这种情况?

我忘记包含以下关键信息:

function fail ($message){
die(json_encode(array('status'=>'fail', 'message'=>$message)));
}

function success ($message){
die(json_encode(array('status'=>'success', 'message'=>$message)));

这会将消息发送回 jQuery 中的 AJAX 函数。看起来在我使用方法 #2 提交表单后,成功/失败消息被清空。

最佳答案

演示:http://jsfiddle.net/xavi3r/D3prt/

$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');

原答案:Resetting a multi-stage form with jQuery

<小时/>

迈克(来自评论)的建议是保持复选框和选择不变!

警告:如果您要创建元素(因此它们不在 dom 中),请将 :hidden 替换为 [type=hidden] 或所有字段将被忽略!

$(':input','#myform')
.removeAttr('checked')
.removeAttr('selected')
.not(':button, :submit, :reset, :hidden, :radio, :checkbox')
.val('');

关于jQuery:清除表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com