小编Sti*_*ofu的帖子

Yii多页面表单向导最佳实践

我正在尝试使用Yii构建一个多页面的表单,但我对PHP和Yii很新,我想知道编写多页面表单的最佳实践是什么.到目前为止,我打算做的是添加一个名为"step"的隐藏字段,其中包含用户在表单中的当前步骤(表单分为3个步骤/页).所以考虑到这一点,这就是我打算如何处理用户点击Controller中的上一个/下一个按钮:

public function actionCreate()
 {
  $userModel = new User;

  $data['activityModel'] = $activityModel; 
  $data['userModel'] = $userModel; 

  if (!empty($_POST['step']))
  {
   switch $_POST['step']:
    case '1':
     $this->render('create_step1', $data);
     break;

    case '2':
     $this->render('create_step2', $data);
     break;

  }else
  {
   $this->render('create_step1', $data);
  }
 }
Run Code Online (Sandbox Code Playgroud)

这种方法有意义吗?或者我离开基地,在Yii/PHP中有更好,更优化的方法吗?

谢谢!

php yii yii1.x

23
推荐指数
1
解决办法
2万
查看次数

JQuery手风琴 - 取消绑定点击事件

我正在使用JQuery的手风琴模块编写表单向导.问题是我想覆盖手风琴菜单上的任何鼠标点击,以便在手风琴将显示下一部分之前首先验证表格.

我尝试过以下方法:

$('#accordion h3').unbind();

$('#accordion h3').click(function() {
  if (validate())
  {
    $("#accordion").accordion('activate', 2);
  }else
  {
    alert("invalid form");
  }
}
Run Code Online (Sandbox Code Playgroud)

但上面的代码不起作用.无论表格是否有效,手风琴的内置点击事件仍会被调用,手风琴会显示下一部分.

我也尝试了以下代码:

$('#accordion h3').click(function(event) {
   if (validate())
   {
     $("#accordion").accordion('activate', 2);
   }else
   {
     alert("invalid form");
   }        
   event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

但是stopPropagation()调用似乎根本不会影响手风琴的行为,无论表单是否有效,都会显示下一部分.

知道我可能做错了吗?

谢谢!

jquery jquery-ui accordion javascript-events

8
推荐指数
1
解决办法
1万
查看次数

JQuery和多个单选按钮组问题

我在使用JQuery处理多个单选按钮组时遇到问题.由于某种原因,JQuery代码无法分辨出两组单选按钮之间的区别,也无法分辨出我点击了哪一组单选按钮.

这是HTML代码:

<!-- Radio button group 1 -->
<input type="radio" name="group_1" value="full_day_ticket"/>
<input type="radio" name="group_1" value="half_day_ticket"/>

<!-- Radio button group 2 -->
<label><input type="radio" name="group_2" value="boarder"/> Snowboard</label>
<label><input type="radio" name="group_2" value="skier"/> Ski</label>
Run Code Online (Sandbox Code Playgroud)

而JQuery代码如下:

$("input:radio[@name='group_2']").click(function() {
  alert('group 2 clicked');
}
Run Code Online (Sandbox Code Playgroud)

现在,当我点击名为"group_1"的单选按钮时,JQuery认为我点击了"group_2"中的单选按钮并显示了警告窗口.出于某种原因,似乎JQuery没有识别@ name ='group_2'过滤器并捕获页面上所有单选按钮的点击,而不仅仅是名为'group_2'的单选按钮.

有没有人遇到过这个问题?或者我做了一些愚蠢的事情?

谢谢!

jquery

1
推荐指数
1
解决办法
5797
查看次数

标签 统计

jquery ×2

accordion ×1

javascript-events ×1

jquery-ui ×1

php ×1

yii ×1

yii1.x ×1