我打算在表单中“收回”有关用户的一些信息,因此我必须将该信息放入正确的输入中。有些是精选结构。
我想从该选择结构中选择正确的选项,为此我喜欢这样:
<select class="m-wrap span12" name="gender">
{if $obj eq '1'}
<option value="">Seleccione</option>
<option value="1" selected>Hombre</option>
<option value="2">Mujer</option>
{elseif $obj eq '2'}
<option value="">Seleccione</option>
<option value="">Hombre</option>
<option value="2" selected>Mujer</option>
{else}
<option value="0" selected>Seleccione</option>
<option value="">Hombre</option>
<option value="2">Mujer</option>
{/if}
</select>
但我想缩短它,所以我不重复代码行。我试过这个但没有成功:
<select class="m-wrap span12" name="gender" id="{$obj}">
<option value="1" id="1">Hombre</option>
<option value="2" id="2">Mujer</option>
<option value="0" id="3">Seleccione</option>
</select>
我正在使用smarty模板和codeigniter。
先谢谢,我是编程新手。
答案 0 :(得分:1)
<select class="m-wrap span12" name="gender">
<option value="1" id="1" <?=($obj == 1) ? 'selected="selected"' : '';?>>Hombre</option>
<option value="2" id="2" <?=($obj == 2) ? 'selected="selected"' : '';?>>Mujer</option>
<option value="0" id="3" <?=($obj == 3) ? 'selected="selected"' : '';?>>Seleccione</option>
</select>
答案 1 :(得分:1)
在这种情况下,我在form_helper
的帮助下只使用了一行代码<div id='myform'>
{form_open('controller/method')}
{form_dropdown('gender',$genders,set_value('gender',$obj),'class = "m-wrap span8 chosen" data-with-diselect="1"')}
{form_close()}
</div>
$ genders是分配给smarty变量的性别列表,如
$ genders = array('0'=&gt;'Seleccione','1'=&gt;'Hombre','2'=&gt;'Mujer')
'gender'是选择标记的名称属性值
set_value()函数设置选项选项,其中选项值等于$ obj
和其他类似选择标记的属性
form_helper
答案 2 :(得分:0)
您可以通过使选项的隐藏HTML值等于该选项在选择列表中的位置(从零开始)来执行此操作;然后存储服务器端值;然后将菜单的selectedIndex
设置为等于存储值。
<select class="m-wrap span12" name="gender" id="gender_field">
<option value="0" selected>Seleccione</option>
<option value="1">Hombre</option>
<option value="2">Mujer</option>
</select>
<input type="hidden" id="gender_obj" value="{$obj}" />
<!-- the above line passes the server-side variable into the
-- HTML for JavaScript to use -->
<script>
(function (){
var gender_field = document.getElementById('gender_field'),
gender_obj = document.getElementById('gender_obj'),
n;
if (!gender_field || !gender_obj) return;
n = gender_obj.value - 0;
/* will be NaN if nothing (or nothing numerical) is there,
* such as on the first visit */
gender_field.selectedIndex = gender_field.options[n] ? n : 0;
})();
</script>
答案 3 :(得分:0)
我终于可以做到这一点。使用Smarty,sintax可以是:
<select class="m-wrap span8 chosen" name="gender" data-with-diselect="1" value="">
<option value=" " {if $okInfo['gender'] eq ' '}selected{/if}>Seleccione</option>
<option value="1" {if $okInfo['gender'] eq '1'}selected{/if}>Hombre</option>
<option value="2" {if $okInfo['gender'] eq '2'}selected{/if}>Mujer</option>
</select>
这样,如果用户从下拉菜单中选择某个选项但是然后没有通过表单验证,那么他输入的数据和确定应该以相同的方式进行检索。因此,对于选择的html标记,这是“回溯”他输入的数据的方式。