在使用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),它们之间有一个空格字符。
你能检查一下吗?