我的项目中有一个多步骤表单,其第一步有一个javascript扩展字段函数,用户可以在其中添加其他字段.如果用户进入下一步,则数据当然存储在会话中直到最终提交.但是,不会记住扩展表格.如果用户从下一步返回,则不显示附加字段及其数据,更糟糕的是,如果附加字段中的数据无效,则用户将看不到它,因为消息显示在消失字段下方(I我正在使用Cakephp默认验证.
有没有办法,比如在会话中存储设置,让它留下来?
var counter = 0;
function moreFields(val1, val2, val3) {
counter++;
var newField = document.getElementById(val1).cloneNode(true);
newField.id = '';
newField.style.display = 'block';
var newFields = newField.querySelectorAll('[name], [id], [for], [data-display]');
for (var i=0;i<newFields.length;i++) {
var theNames = newFields[i].name
if (theNames)
newFields[i].name = "data[" + val3 + "][" + counter + "][" + theNames + "]";
var theNames2 = newFields[i].id;
if (theNames2)
newFields[i].id = theNames2 + counter;
console.log(newFields[i].id);
var theNames3 = newFields[i].htmlFor;
if (theNames3)
newFields[i].htmlFor = theNames3 + counter;
//console.log(newFields[i].htmlFor);
var theNames4 …Run Code Online (Sandbox Code Playgroud)我有一个庞大的数组,在几个视图中使用,所以我将它存储在一个元素文件中,并在需要时获取它:
element/select.ctp:
$districts = array(
__('Region A') => array(
__('district 1') => __('district 1'),
__('district 2') => __('district 1'),
__('district 3') => __('district 1')
),
__('Region B') => array(
__('district 4') => __('district 4'),
__('district 5') => __('district 5'),
__('district 6') => __('district 6')
)
);
Run Code Online (Sandbox Code Playgroud)
我把它包含在profiles/add.ctp:
echo $this->element('select');
echo $this->Form->Create('Profile');
echo $this->Form->input('district', array(
'options' => $districts
);
Run Code Online (Sandbox Code Playgroud)
但是变量没有通过.我想知道如何从元素中传递它?
我有一个textarea,用户可以输入英文或中文,或两者兼而有之.maxLength="50"英语很好,但我希望将汉字限制在20只.如果是混合的情况,它也应该限制为20.不确定我怎么能这样做?
我试图在检查复选框时禁用字段集中的2个选择字段.我也尝试了类似getElementById或者方法getElementsByTagName,.attr()但它不起作用..
我希望加入disabled到fieldset喜欢这个检查就当:
<fieldset id="test" disabled>
<div class="col-lg-6">
<?php echo $this->Form->input('frequency_remarks'); ?>
</div>
<div class="col-lg-6">
<?php echo $this->Form->input('duration_remarks'); ?>
</div>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
复选框:
<div class="checkbox">
<label for="CommentFrequencyOk">
<input type="hidden" name="data[Comment][frequency_ok]" id="CommentFrequencyOk_" value="0" />
<input type="checkbox" name="data[Comment][frequency_ok]" class="checkbox" value="1" id="CommentFrequencyOk" /> Frequency
</label>
</div>
Run Code Online (Sandbox Code Playgroud)
剧本:
$('#CommentFrequencyOk').checked(function () {
$('#test').setAttribute('disabled');
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试<br>在变量中添加一个html标记(在下面标记),但是当页面被渲染时,它被识别为纯文本.我不确定我哪里出错了.
PS不确定是否重要:我正在使用Cakephp.它是自定义帮助程序类中的变量.
App::uses('AppHelper', 'View/Helper');
class ComaHelper extends AppHelper {
public $helpers = array('Time');
public function coma($array, $name) {
$prefix = '';
$result = '';
foreach ($array as $key => $value) {
$result .= $prefix . $value;
if ($name == 'condition') {
$prefix = ', <br>'; // it's shown as plain text on the page
} else {
$prefix = ', ';
}
}
return $result;
}
}
Run Code Online (Sandbox Code Playgroud)
这页纸:
<?php echo h($this->Coma->coma($post['Condition'], 'condition')); ?>
Run Code Online (Sandbox Code Playgroud)