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