如何将用户尝试填充数据的输入旁边的所有输入设置为只读


How to set readonly all input beside input that user try to fill data?

如何设置readonly除了用户试图填充数据的输入之外的所有输入?


当用户加载页面index.php并试图将数据填充到EG:<input id="edValue2" ...>时,我想将除<input id="edValue2" ...> 之外的所有输入设置为只读

但是我的代码不起作用,我该怎么办?

index.php

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<html>
<body>
<form id="form-id" method="post" action="" ENCTYPE = "multipart/form-data" onsubmit="return checkform(this);">
<?PHP
    for ($i=1;$i<=5;$i++)
        {
?>
            <input id="edValue<?PHP echo $i; ?>" type="text" onKeyUp="send_it_register_to_hidden_input<?PHP echo $i; ?>()" onKeyPress="send_it_register_to_hidden_input<?PHP echo $i; ?>()"><br>
<?PHP
        }
?>
    <br>
    <br>
    <br>
    <input type="text" id="lblValue" value="">
    <input type="text" id="lblValue_number" value="">
</form>
</body>

<?PHP
    for ($i=1;$i<=5;$i++)
        {
?>
            <script>
            function send_it_register_to_hidden_input<?PHP echo $i; ?>()
                {
                    lblValue.value = $("#edValue<?PHP echo $i; ?>").val();                    
                    lblValue_number.value = <?PHP echo $i; ?>; 
                    Check_register_it();
                }
            </script> 
<?PHP
        }
?>   


<script>
function Check_register_it()
   {
       $('#form-id input').attr('disabled','disabled'); //disable all
       $(this).removeAttr('disabled'); //enable the one that triggers the event
   }
</script> 


</html>

我强烈建议不要创建这样的函数。这只会让你的代码变得复杂。在这种情况下使用classes,这样就不需要为要操作的每个id设置函数:

<body>
<form id="form-id" method="post" action="" ENCTYPE = "multipart/form-data" onsubmit="return checkform(this);">
<?PHP for ($i=1;$i<=5;$i++) { ?>
    <input class="input_boxes" type="text" data-i="<?php echo $i; ?>"><br/>
<?PHP } ?>
    <br>
    <br>
    <br>
    <input type="text" id="lblValue" value="">
    <input type="text" id="lblValue_number" value="">
</form>
</body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$('.input_boxes').on('keyup', function(e){
    var value = $(this).val();
    var i_val = $(this).attr('data-i');
    $('#lblValue').val(i_val);
    $('#lblValue_number').val(value);
    $('input').prop('readonly', true);
    $(this).prop('readonly', false);
});
</script>

假设所有输入都是同一元素的子元素(即兄弟元素),您可以使用jQuery轻松地做到这一点:

$('input').on('focus', function(){
    $('input').removeAttr('readonly');
    $(this).siblings().attr('readonly', 'readonly');
});

JSBin:http://jsbin.com/qukohosafuje/1/edit

试试这个:-

  $("input").on('keyup', function () {
        $('input').not(this).attr('readonly', 'readonly');
  });

演示

您必须将所有JQuery语句放在:中

$(function(){
     //put your JQuery code here
});

试着告诉我现在是否有效。

您可以简单地将readonly的html属性用于不希望用户填充的输入。例如

<input type="text" id="lblValue" value="" readonly>

如果在填充了必要的输入之后,您需要只读输入是可访问的,那么您可以使用jquery来触发事件。

例如

$('input').keyUp(function(){
    if($('#edValue2').val()!=""){
        $('input:not("#edValue2")').removeAttr('readonly');

})