9

我正在尝试将只读添加到所有输入,然后单击删除只读以使其适用于打字。所有输入部分的只读集都有效,但单击时删除无效,请帮忙。

我的代码:

<script language="javascript">
$(document).ready(function()
{
$('#secureFields :input').attr('readonly', true);

    $('.readonly').click(
    function()
    {
        if ($('.readonly').attr("readonly") == true)
        {
            $('.readonly').val('');
            $('.readonly').removeAttr("readonly");
        }           
    }); 
});
</script>

html是这样的:

 <table class='table' id='secureFields'  >
        <tr>
            <td width=200>First Name:</td>
            <td><input readonly='readonly'  type='text'  name='firstname' size=30 class='required'/></td>
        </tr>
        <tr>
4

9 回答 9

9

你的意思是:

$("input").click(function() {
  if ( $(this).is('[readonly]') ) {
     $(this).removeAttr("readonly");
  } 
});

参见:jsFiddle

于 2012-06-13T07:48:31.297 回答
4
<html>

 <table class='table' id='secureFields'>
    <tr>
        <td width=200>First Name:</td>
        <td><input type='text'  name='firstname' size=30 class='required'/></td>
    </tr>
</table>

   <button id="btnEnableInputs" type="button">Enable!</button>     

</html>

$(document).ready(function() {

$("#secureFields :input").each(function() {
   $(this).attr("readonly", true);
});

$("#btnEnableInputs").click(function() {
     $("#secureFields :input").each(function() {
          $(this).attr("readonly", false);
     });
 });
});

http://jsfiddle.net/hfK8f/

于 2012-06-13T07:56:37.723 回答
3

您指定的课程是“必需的”,所以$('.readonly').attr("readonly") == true应该是 $('.required').attr("readonly") == true,依此类推

于 2012-06-13T07:44:40.273 回答
3

重要提示:不要写language="javascript"但是type="text/javascript"

您必须选择只读的输入attribute,而不是class只读的。

因此,请执行以下操作:

$('input[readonly]').click(

代替

$('.readonly').click(

然后你只需要一行:

$(this).removeProp("readonly");

这是正确的代码:

$('input[readonly]').click(function(){
     $(this).removeProp("readonly");           
});

查看Examplefiddle

仅供参考:脚本不会被您停止readonly,他们可以简单地设置字段的值......

于 2012-06-13T07:50:38.773 回答
2

试试这个:

$('input').click(function() {
   $(this).prop('readonly', false)
});
于 2012-06-13T07:45:20.607 回答
2

试试这个

$(document).ready(function () {
    $('#secureFields :input').attr('readonly', true);
    $('input[readonly]').click(
        function (event) {
        if ($(event.currentTarget).attr("readonly") == "readonly") {
            $(event.currentTarget).removeAttr("readonly");
            $(event.currentTarget).val("");
        }
    });
});

这会在单击的输入上更改只读属性,希望对您有所帮助

于 2012-06-13T07:48:40.450 回答
2
comment the script part/**/ to check  readonly  mode

<body> 
<table class='table' id='secureFields'  >
        <tr>
            <td width=200>First Name:</td>
            <td><input readonly="readonly"  type='text'  name='firstname' size=30 class='required'/></td>
        </tr>
       </table>

</body>

<script type="text/javascript">
  $(document).ready(function()
{
$('#secureFields:input').attr('readonly', true);
$('.required').val('');

    $('.required').focus(
    function()
    {
        if ($('.required').attr("readonly") == true)
        {

            $('.required').removeAttr("readonly");
        }           
    }); 
});  
</script>
于 2012-06-13T08:05:16.417 回答
1

也许您只想:

$('#secureFields :input').click(function() {
    $('input[readonly]').val('').removeAttr('readonly');        
});

由于 HTML 中没有readonlyCSS 选择器,因此您的脚本在引用 后什么都不做.readonly,我必须对您正在尝试做的事情做出假设。以上操作将使所有只读字段变为非只读字段,并在单击任何输入时清除当前值。

于 2012-06-13T07:54:53.507 回答
1

为了防止自动完成,您可以在输入标签或表单标签中添加 autocomplete="off"(如果同时设置,则输入值优先,因此您可以对单个标签使用 autocomplete="on"。

无论如何, .selector 选择具有特定类的元素,而不是属性。你可以:

使用属性选择器选择: input[readonly] 选择存在只读属性的输入,或 input[readonly="readonly"] 选择属性设置为自身的输入(首选第一个)。

事实上,您不需要只选择具有属性集的输入,您可以编写以下内容以在单击后立即删除只读属性:

$('input').click(function(){
  $(this).removeAttr('readonly')
}

不过,您可能一直都想要 <input autocomplete="off" ...> 。

于 2012-06-13T07:59:19.487 回答