简体   繁体   English

PHP WordPress模板文件中的JavaScript冲突

[英]Php javascript conflict in wordpress template file

I have built a contact form for my wordpress site. 我已经为我的wordpress网站建立了联系表格。 Four fields are there - name, email, subject, message. 共有四个字段-名称,电子邮件,主题,消息。 For logged in users I want their name and email to be auto-filled in their respective fields in the form and those name, email fields will be disabled for them to edit. 对于已登录的用户,我希望他们的姓名和电子邮件自动填写在表单的相应字段中,并且这些名称将禁用电子邮件字段供他们编辑。 And for non-logged in users they will put name, email fields manually. 对于未登录的用户,他们将手动输入姓名和电子邮件字段。 I have put this code in the page template file - 我已将此代码放在页面模板文件中-

    <?php

    $current_user = wp_get_current_user();
    $user_email = $current_user->user_email;
    $user_name = $current_user->user_firstname.' '.$current_user>user_lastname;

    if ( 0 != $current_user->ID ) {

     echo '<script type="text/javascript">
     document.getElementById("curUserName").value = "'.$user_name.'";
     document.getElementById("curUserName").disabled = "disabled";
     document.getElementById("curUserEmail").value = "'.$user_email.'";
     document.getElementById("curUserEmail").disabled = "disabled";
     </script>';
     }
     ?>

But this code is disabling name, email fields for both users (logged in and non-logged in). 但是此代码禁用了两个用户的名称和电子邮件字段(已登录和未登录)。 I have controlled the script through if condition. 我已经通过if条件控制了脚本。 Still the javascript is applying for both users. javascript仍然适用于两个用户。 Please advise where I have gone wrong. 请告知我哪里出了问题。

Here is the form html - 这是html格式-

    <form action="/success.php" method="post">
<label>Name :</label><br>
<input type="text" id="curUserName" name="sender_name" required><br>
<label>Email :</label><br>
<input type="text" id="curUserEmail" name="sender_email" required><br>
<label>Subject :</label><br>
<input type="text" name="sender_sub"><br>
<label>Message</label><br>
<textarea name="sender_msg" rows="4" cols="60" required></textarea><br>
<input type="submit" name="submit" value="Send">
</form>

Don't echo javascript with php. 不要用php回显javascript。 It's bad practice. 这是不好的做法。

Try using value tags in your inputs, check if user logged in with a ternary operator, and if so, echo to value tag their credentials . 尝试在输入中使用值标签,检查用户是否使用三元运算符登录,如果是,则回显其凭据到值标签。

<?php (is_user_logged_in()) ? $current_user = wp_get_current_user() : $current_user = false; ?>

<label>Name</label>
<input type="text" id="curUserName" name="sender_name" value="<?php ($current_user) ? echo $current_user->user_name : '' ?>" required>
<label>Email</label>
<input type="text" id="curUserEmail" name="sender_email" value="<?php ($current_user) ? echo $current_user->user_email : '' ?>" required>

The source you are going to change has disabled option already.. so just remove it if the user is not logged in :) 您将要更改的源已禁用选项..因此,如果用户未登录,则将其删除:)

<?php

    $current_user = wp_get_current_user();
    $user_email = $current_user->user_email;
    $user_name = $current_user->user_firstname.' '.$current_user>user_lastname;

    echo '<script type="text/javascript">';
    if ( 0 != $current_user->ID )
    {

        echo 'document.getElementById("curUserName").value = "'.$user_name.'" 
        document.getElementById("curUserName").disabled = "disabled"
        document.getElementById("curUserEmail").value = "'.$user_email.'"
        document.getElementById("curUserEmail").disabled = "disabled"';
     }
     else
     {

        echo 'document.getElementById("curUserName").disabled = false;
        document.getElementById("curUserEmail").disabled = false;';         
     }
     echo '</script>';
 ?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM