CodeIgniter的JQuery UI对话框错误


JQuery UI dialog bug with CodeIgniter

在使用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

看起来空白是由于您的会话,: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),它们之间有一个空格字符。

你能检查一下吗?