如何设置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');
})