输入值更改时的事件

时间:2014-04-08 12:17:05

标签: php dynamic input onchange

您好,我希望在输入值更改时弹出窗口。我试过这个,我对输入的测试:

<input onchange="maFonction()" id="result" readonly="readonly" type="text" value="0" size = "10" />

我的功能

maFonction = function(){
$.post("yourFile.php");
}

yourfile.php

<?php

$a = 40 ;
if ($result > $a) {
    ?>
    <script> alert("yay!"); </script> 
     <?php } elseif ($result == $a) {
     ?>
                    <input onclick="s(this.form);" type="button" value="sauvegarder" /> 
        <?php
        } else {
    ?>
    <script> alert("boooo!"); </script> 
    <?php
}




?>

我解读readonly:它就像一个计算器:我有很多(7)输入,我可以存储值,readonly是总数。所以当它低于40时,当它相等时,以及当它超过40时,我需要一个msg。

感谢您的帮助,因为我没有任何错误,当我的页面在没有任何内容后刷新时,我只有弹出窗口。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,您不需要服务器端代码来执行此操作。 Here's a fiddle用jQuery做到这一点。很简单:

HTML:

<input type="text" id="myInput"/>

Javascript(假设你包含了jQuery):

$('document').ready(function() {
   $('#myInput').on('change',function(){
       if(isNaN(this.value))
           alert("Please enter a number");
        else
        {
            var a = 40;
            var myNumber = parseInt(this.value);
            if(myNumber > a) alert("yay!");
            else if (myNumber == a) alert("equals!");
            else alert("boooo!");
        }
    }); 
});

我认为代码很容易理解。请注意,您必须保留&#34;更改&#34;的文本字段。触发事件,它假设你实际上改变了一些东西。如果您希望每次都触发blur事件,而不仅仅是在值发生变化时,您可以使用success事件。

如果您想要或需要在服务器端执行此类检查(可能不比比较2个数字那么容易),您确实可以使用AJAX。但在这种情况下,我建议从服务器端代码返回XML,JSON甚至是未格式化的字符串,并在javascript中处理响应。例如,您可以简单地返回“更大”,“更小”,“等于”等等。 ,并在AJAX通话的<input type="text" id="input1" /><br/> <input type="text" id="input2" /><br/> <input type="text" id="input3" /><br/> <input type="text" id="myInput" readonly="readonly"/> 事件中采取相应行动。但那是另一课; - )

在OP的评论之后编辑:

HTML

$('document').ready(function() {
    $('#input1,#input2,#input3').each(function()   {$(this).on('change',recalculate);}
       );

});

function recalculate()
{
    if(isNaN(this.value))
       alert("Please enter a number");
    else
    {
        var a = 40;
        var value1 = $('#input1').val().trim() == "" ? 0 :  parseInt($('#input1').val());
        var value2 = $('#input2').val().trim() == "" ? 0 :  parseInt($('#input2').val());
        var value3 = $('#input3').val().trim() == "" ? 0 :  parseInt($('#input3').val());
        var total =  value1 + value2 + value3
        $('#myInput').val(total);
        if(total > a) alert("yay!");
        else if (total == a) alert("equals!");
        else alert("boooo!");
    }
}

Javascript:

$('document').ready(function() {
    $('#input1,#input2,#input3').each(function()   {$(this).on('change',recalculate);}
       );

});

function recalculate()
{
    if(isNaN(this.value))
       alert("Please enter a number");
    else
    {
        if($('#input1').val().trim() !== "" && $('#input2').val().trim() !== "" && $('#input3').val().trim() !== "")
        {
            var a = 40;
            var value1 = $('#input1').val().trim() == "" ? 0 :  parseInt($('#input1').val());
            var value2 = $('#input2').val().trim() == "" ? 0 :  parseInt($('#input2').val());
            var value3 = $('#input3').val().trim() == "" ? 0 :  parseInt($('#input3').val());
            var total =  value1 + value2 + value3
            $('#myInput').val(total);
            if(total > a) alert("yay!");
            else if (total == a) alert("equals!");
            else alert("boooo!");
        }
    }
}

The fiddle

如果您希望仅在填写所有3个字段时计算并发出警报:

{{1}}

The fiddle