在提交表单之前更改输入文本值

时间:2017-11-15 13:11:26

标签: javascript php jquery forms textinput

在尝试使用jQuery提交表单之前,我正在尝试更改输入文本字段的值:

<form actions="http://test.com/" method="GET">
 <input name="test" id="autocompleteform" type="text"/>
</form>
<script>
$('#form-customer-attr-new').submit(function(e) {
    var value = $("#autocompleteform").val();
    value = value.substr(0, value.indexOf(' '));
    if (!isNan(value) && !empty(value)) {
        $("#autocompleteform").val(value);
        alert($("#autocompleteform").val());
        return true;
    } else {
        alert("Invalid Postcode");
        return false;
    }
});
</script>

当我提醒输入文件的值时,它显示新值,但是当提交表单时,url中的参数仍然显示输入的旧值,例如:

 old_input_value = "1234 justice spoiler message";
 new_input_value = "1234";
 the_url_after_form_submit_now = "http://test.com?test=1234+justice+spoiler+message";
 the_url_after_form_submit_should_be ="http://test.com?test=1234";

9 个答案:

答案 0 :(得分:2)

<form action="" id="form_id">
    <input type="text" name="change_value" id="change_value">
    <input type="text" name="d" id="d">
    <input type="submit" name="">

</form>    

$("#form_id").on("submit", function (e) {
        e.preventDefault();//stop submit event
        var self = $(this);//this form
        $("#change_value").val("deneme");//change input
        $("#form_id").off("submit");//need form submit event off.
        self.submit();//submit form
    });

答案 1 :(得分:1)

一些事情:

  • 表单的ID未设置,添加id =“form-customer-attr-new”以形成标记
  • isNan应该是isNaN
  • !空应该是!!

现在它应该工作了。完整的工作示例:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, 
initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <script
            src="https://code.jquery.com/jquery-3.2.1.min.js"
            integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
            crossorigin="anonymous"></script>
</head>
<body>
<form actions="http://test.com/" method="GET" id="form-customer-attr-new">
<input name="test" id="autocompleteform" type="text"/>
<input type="submit" />
</form>

<script>
    $('#form-customer-attr-new').submit(function(e) {
    var value = $("#autocompleteform").val();
    value = value.substr(0, value.indexOf(' '));


    if (!isNaN(value) && !!(value)) {
        $("#autocompleteform").val(value);
        alert($("#autocompleteform").val());
        return true;
    } else {
        alert("Invalid Postcode");
        return false;
    }
});

</script>
</body>

答案 2 :(得分:0)

您在更改值之前提交表单。更改值后,您必须使用jQuery提交表单。

更改提交按钮以链接到jquery功能,更改所有必须更改的内容,然后使用以下内容提交表单:

$("#formId").submit();

答案 3 :(得分:0)

要实现这一目标,您需要:

  1. 阻止表单提交
  2. 更改输入值
  3. 使用jquery $('#form').submit()
  4. 提交表单

    在回调处理程序

    内阻止使用e.preventDefault()提交表单

答案 4 :(得分:0)

通过ajax使用您的自定义提交。即,

<button onclick=""document.getElementById('idembim').style.display='block'"" class=""w3-button w3-blue w3-small w3-padding-small"">Select Image</button>

答案 5 :(得分:0)

Submit API for jQuery

处理程序将作为对$('#form-customer-attr-new').submit()的响应执行(实际上它是一个回调函数),因此您需要在执行实际提交之前将代码从该函数移动。

所以在jQuery submit()调用之前移动代码。

此外,我发现您的id未添加到HTML中,请执行此操作,否则调用将无效。

答案 6 :(得分:0)

第1步:在提交表单时调用java脚本函数

<form onsubmit="return test();">

第2步:文本字段中的内部测试功能设置值。

<script>
function test()
{
   document.getElementById("myTextFieldId").value = "12345";
   return true;
}
</script>

答案 7 :(得分:0)

<form id="form-customer-attr-new" action="" method="get">
 <input name="test" id="autocompleteform" type="text" value=""/>
</form>

<script>
$('#form-customer-attr-new').submit(function(e) {
    var value = $("#autocompleteform").val();
    value = value.substr(0, value.indexOf(' '));

    if (!isNaN(value) && value!='') {
        $("#autocompleteform").val(value);
        alert($("#autocompleteform").val());
        return true;
    } else {
        alert("Invalid Postcode");
        return false;
    }
});
</script>

答案 8 :(得分:0)

这是一种略有不同的方法,但我相信它应该有效。 (1)为你的逻辑创建一个命名函数(我纠正/改变了一些有问题的语法)

<script type="text/javascript" language="javascript">
function prepSubmittal()
{
    var result = false;
    var value = null;

    try
    {
        value = $("#autocompleteform").val();

        if(value.indexOf(" ")>-1) value = value.substring(0, value.indexOf(" "));

        if (!isNaN(value) && value.trim().length>0) 
        {
        $("#autocompleteform").val(value);
        result = true;
        } 
            else 
            {
        alert("Invalid Postcode");
        result = false;
        }
    }
    catch(e)
    {
        result = false;
        alert("prepSubmittal Error:  " + e.Message);
    }
    finally
    {

    }

    return result;
}


</script> 

(2)将表单元素更改为以下内容(请注意,您有操作属性而非操作,并添加了 onsubmit =“return prepSubmittal()”

<form action="http://test.com" method="GET" onsubmit="return prepSubmittal()">

让我知道它是怎么回事。