【问题标题】:Input fields get (readonly) after hit submit button点击提交按钮后输入字段获取(只读)
【发布时间】:2015-04-19 04:16:01
【问题描述】:

我有一个用 PHP 和 smarty 编码的脚本,我想在这个脚本中进行一些更改,例如当用户单击配置文件设置并填写配置文件数据(如全名、电子邮件、银行帐户)时在用户配置文件设置中号码,银行名称,分行代码,瓷砖等)填写此信息并单击保存按钮脚本保存所有设置但我想在用户提交他/她的数据后制作一些表单输入字段(只读)我想制作此数据(只读)(银行名称,帐号,分行代码,标题)我的意思是只读,在用户填写此内容并将其保存在配置文件中后,它显示给用户(只读)用户无法更改它,我可以从数据库中更改它。

下面是表格代码

<form id="settingsform" onsubmit="return submitform(this.id);">
<input type="hidden" name="a" value="submit" />
Bank Name:
                    </td>
                    <td><input type="text" name="bank" id="bank" value="{$user_info.bank}"></td>
                </tr>
                <tr>
                <td align="right" width="50%">
                    Bank Account Number:
                    </td>
                    <td><input type="text" name="baccount" id="baccount" value="{$user_info.baccount}"></td>
                </tr>
                <tr>
                <td align="right" width="50%">
                    Bank Account Title:
                    </td>
                    <td><input type="text" name="btitle" id="btitle" value="{$user_info.btitle}"></td>
                </tr>
                <tr>
                    <td align="right" width="50%">
                    Bank Branch Code:
                    </td>
                    <td><input type="text" name="bcode" id="bcode" value="{$user_info.bcode}"></td>
                </tr>
<input type="submit" name="btn" value="{$lang.txt.send}" class="orange" />

我也已经在下面这样尝试了

<script>
function hide(){
  document.getElementById("bank").disabled = true;
  document.getElementById("baccount").disabled = true;
  document.getElementById("btitle").disabled = true;
  document.getElementById("bcode").disabled = true;
}
</script>

<input type="button" onClick="hide()" value="save">

【问题讨论】:

    标签: javascript php jquery smarty


    【解决方案1】:
    <input type="text" name="country" value="Norway" readonly>
    

    http://www.w3schools.com/tags/att_input_readonly.asp

    然后只需检查是否为您希望只读的字段设置了 POST/GET ->

    <input type="text" name="country" value="Norway" <?php isset($_POST['country']) ? echo 'readonly' : ''; ?> >
    

    更新

    <input type="text" name="country" value="Norway" <?php isset($user_info.bank) ? echo 'readonly' : ''; ?> >
    

    只需将 isset() 中的变量替换为字段的变量,具体取决于您如何初始化可能需要使用的变量

    空()

    相反,只需简单地将 isset() 替换为 !empty()

    原因!符号是告诉代码在变量不为空时执行第一位(回显部分)

    更新 2

    <input type="text" name="country" value="Norway" {if isset($user_info.bank) } readonly {/if} >
    

    上面的代码应该可以与 smarty 一起使用,但是这个想法很简单,只需有一个“if”语句来检查变量是否已设置/有数据,如果有,则在输入字段中回显“只读”

    【讨论】:

    • 我已经更新了我的问题,请看一下并就此提出建议。
    • 所以,请确保我了解您想要什么,一旦用户提交/保存了他的数据,您希望这些特定字段对该用户永久只读吗? @ShopSupport
    • 更新答案@ShopSupport
    • 兄弟你的代码是用smarty模板文件工作的吗?
    • 应该是,我给了它一个快速的 smarty 但代码应该很容易转换为 smarty @ShopSupport
    【解决方案2】:

    尝试在submitform() 中使用attr() 喜欢,

    function submitform(id){
       ....
       ....
       $('#bank,#baccount').attr('readonly','readonly');
       return false;
    }
    

    更新,

    function hide(){
         $("#bank,#baccount,#btitle,#bcode").prop('disabled', true);
    }
    

    或者试试,

    function hide(){
         $("#bank,#baccount,#btitle,#bcode").attr('disabled', 'disabled');
    }
    

    【讨论】:

    • 可以看看我已经尝试过的代码,但它仍然不适合我。
    • 我已经尝试了您的两个更新代码,但仍然无法正常工作。它在配置文件设置表单中显示空输入字段,也没有将任何数据发送到数据库。我的代码也发生了同样的事情。我已经尝试过创建 .js 文件,但还是一样。
    猜你喜欢
    • 2021-09-10
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多