CodeIgniter的JQuery UI对话框错误

时间:2014-03-23 03:48:50

标签: javascript php jquery codeigniter jquery-ui-dialog

在使用JQuery对话框尝试使用PHP / CI动态更改输入值时,我遇到了一些麻烦。

以下是该视图中的相关代码:

<span id="emailDialog" hidden>
<?php
    echo form_open('', array('id' => 'emailForm'));
    if (isset($this->session->userdata)){
        $name = $this->session->userdata('firstName') . ' ' . $this->session->userdata('lastName');
        $email = $this->session->userdata('email');
    } else {
        $name = '';
        $email = '';
    }
    echo form_input(array(
                 'id' => 'name',
               'name' => 'name',
              'value' => $name,
        'placeholder' => 'Name'
    ));
    echo form_input(array(
                 'id' => 'email',
               'name' => 'email',
              'value' => $email,
        'placeholder' => 'Email'
    ));
    echo form_textarea(array(
                 'id' => 'message',
               'name' => 'message',
               'cols' => 35,
               'rows' => 15,
              'value' => '',
        'placeholder' => 'We look forward to hearing from you!'
    ));
    echo form_close();
?>
<span id="mailErrors"></span>

JavaScript / JQuery(1.10.3)代码:

function loginForm() {
    $('#login').dialog({
        autoOpen: false,
        height: 450,
        width: 300,
        position: ['center-top'],
        show: 'fade',
        title: 'Login',
        modal: true,
        buttons: {
            Login: function () {
                validateCredentials();
            },
            'Sign Up': function() {
                loadRegister();
            }
        }
    });
    $('#login').dialog('open');
}

正在发生的事情是,如果我完全绕过PHP代码,名称输入的值仍然是'',允许显示“占位符”,但是,当使用PHP代码并且没有设置userdata时,名称输入字段(它应该是空白的)前面有一个空格,没有占位符出现(因为我使用占位符代替标签,导致混淆输入的内容,尽管它应该是显而易见的);如果设置了userdata,则名称和电子邮件值将按预期填充,并且没有不良行为。

我尝试了什么:

**在if语句之外实例化空白变量,在else子句之前。

**包装JavaScript以更改PHP if语句中的值,例如......

<?php if(isset($this->session->userdata)): ?>
    <script type="text/javascript">
        $('#name').val("<?php echo $this->session->userdata('firstName') ?>");
        $('#email').val("<?php echo $this->session->userdata('email') ?>");
    </script>
<?php endif; ?>

...以及上面的其他变体(.text()而不是.val(),从.val()内部删除引号,以及另一件完全逃避我的事情。)

我做了一些研究,发现1.11.0中的对话框小部件有一些错误修复,但无法看到(明确地)已解决此特定问题。

我意识到这是相当无关紧要的,但我可以向你保证,这令人非常恼火。所以,我真的只是想知道是否有其他人遇到过这个问题(并且可能已修复它),或者是否有人可以就修复/解决方法提出任何建议。

谢谢! -J

1 个答案:

答案 0 :(得分:0)

看起来空白是由您的会话引起的:D:

if (isset($this->session->userdata)){
    $name = $this->session->userdata('firstName') . ' ' . $this->session->userdata('lastName');
    $email = $this->session->userdata('email');
} else {
    $name = '';
    $email = '';
}

不知何故,你正在用空值设置会话,这就是为什么$ name得到'',XD,CI会给你两个假(firstName和lastName),它们之间有空格字符。

你能检查一下吗?