已检测到非法选择。请在下拉列表中联系站点管理员 -- ajax 领域 drupal 相关 的问题

An illegal choice has been detected. Please contact the site administrator in drop down list


2
vote

问题

中文

当我从下拉列表中选择值时,相应的值显示第一次。但是,当我再次选择另一个值时,它不显示值而不是显示的错误msg已检测到非法选择。请联系网站管理员。任何人都可以建议我在下面的代码中做错了吗?

  <?php   function form_test_menu()  {   $items['mark_entry'] = array(     'title' => 'Mark Entry',     'page callback' => 'drupal_get_form',     'page arguments' => array('form_test_form'),     'access callback' => TRUE,     );   return $items; }   function form_test_form($form,&$form_submit)  {  $dept = $_POST['dept']; $batch = $_POST['batch']; $month = $_POST['Month']; $year = $_POST['Year']; $semester = $_POST['semester'];  $query = db_select('student_master'); $query->fields('student_master', array('reg_no','name','dob','dept_code','degree','batch_year')); $query->condition('dept_code',$dept,'=') AND $query->condition('batch_year',$batch,'='); $results = $query->execute();  $options = array();  foreach($results as $student_result) {  $options[$student_result->reg_no]=t($student_result->reg_no); }     $form['roll']= array(   '#type' => 'select',   '#title' => t('Registration Number'),   '#options' =>$options,   '#required' => TRUE,   '#ajax' => array('callback' =>       '_ajaxfunction','wrapper' => 'subjectsdiv'),);   $form['month'] = array('#title' => t('month'),     '#type' => 'hidden',     '#value' => $month, '#required' => TRUE,);   $form['year'] = array('#title' => t('year'),     '#type' => 'hidden',     '#value' => $year, '#required' => TRUE,);   $form['semester'] = array('#title' => t('semester'),     '#type' => 'hidden',     '#value' => $semester, '#required' => TRUE,);   $form['subjects'] = array('#prefix' => '<div id="subjectsdiv">','#suffix' => '</div>');  $form['submit'] = array('#type' => 'submit','#value' => 'Submit');  return $form; }   function _ajaxfunction($form, $form_state)   {    $key = !empty($form_state['values']['roll']) ? $form_state['values']['roll'] : 1;  $month = !empty($form_state['values']['month']) ? $form_state['values']['month'] : 1;  $year = !empty($form_state['values']['year']) ? $form_state['values']['year'] : 1;  $semester = !empty($form_state['values']['semester']) ? $form_state['values']['semester'] : 1;  $query1 = db_select('semester_appear'); $query1->fields('semester_appear',array('subject_code')); $query1->condition('reg_no',$key,'=') AND $query1->condition('semester_appear',$semester,'=')AND $query1->condition('month',$month,'=') AND $query1->condition('year',$year,'='); $query1->orderBy('sub_serial_no','ASC'); $results = $query1->execute();  while ($record_res = $results->fetchAssoc()) {  $subject_name = $record_res['subject_code'];  $query = db_select('subject'); $query->fields('subject', array('subject_name','subject_code')); $query->condition('subject_code',$subject_name,'=') ; $subject_results = $query->execute();  foreach($subject_results as $sub_result) {  $options[$sub_result->subject_code]=t($sub_result->subject_name); }    $form['subjects']['name']= array(     '#type' => 'select',     '#title' => t('Please Select Subject'),     '#options' => $options, '#required' => TRUE,);  $form['subjects']['inter'] = array(   '#type' => 'textfield',    '#title' => t('Internal Marks'),    '#size' => 60,    '#maxlength' => 128,    '#required' => TRUE,);   $form['subjects']['exter'] = array(   '#type' => 'textfield',    '#title' => t('External Marks'),    '#size' => 60,    '#maxlength' => 128,    '#required' => TRUE,);  }  return $form['subjects'];  }   

英文原文

when i am selecting values from dropdown list the corresponding values showing first time. but when i am again selecting the another value its not showing value instead of the error msg displaying An illegal choice has been detected. Please contact the site administrator. can anyone suggest me where i did wrong in the following code

<?php   function form_test_menu()  {   $items['mark_entry'] = array(     'title' => 'Mark Entry',     'page callback' => 'drupal_get_form',     'page arguments' => array('form_test_form'),     'access callback' => TRUE,     );   return $items; }   function form_test_form($form,&$form_submit)  {  $dept = $_POST['dept']; $batch = $_POST['batch']; $month = $_POST['Month']; $year = $_POST['Year']; $semester = $_POST['semester'];  $query = db_select('student_master'); $query->fields('student_master', array('reg_no','name','dob','dept_code','degree','batch_year')); $query->condition('dept_code',$dept,'=') AND $query->condition('batch_year',$batch,'='); $results = $query->execute();  $options = array();  foreach($results as $student_result) {  $options[$student_result->reg_no]=t($student_result->reg_no); }     $form['roll']= array(   '#type' => 'select',   '#title' => t('Registration Number'),   '#options' =>$options,   '#required' => TRUE,   '#ajax' => array('callback' =>       '_ajaxfunction','wrapper' => 'subjectsdiv'),);   $form['month'] = array('#title' => t('month'),     '#type' => 'hidden',     '#value' => $month, '#required' => TRUE,);   $form['year'] = array('#title' => t('year'),     '#type' => 'hidden',     '#value' => $year, '#required' => TRUE,);   $form['semester'] = array('#title' => t('semester'),     '#type' => 'hidden',     '#value' => $semester, '#required' => TRUE,);   $form['subjects'] = array('#prefix' => '<div id="subjectsdiv">','#suffix' => '</div>');  $form['submit'] = array('#type' => 'submit','#value' => 'Submit');  return $form; }   function _ajaxfunction($form, $form_state)   {    $key = !empty($form_state['values']['roll']) ? $form_state['values']['roll'] : 1;  $month = !empty($form_state['values']['month']) ? $form_state['values']['month'] : 1;  $year = !empty($form_state['values']['year']) ? $form_state['values']['year'] : 1;  $semester = !empty($form_state['values']['semester']) ? $form_state['values']['semester'] : 1;  $query1 = db_select('semester_appear'); $query1->fields('semester_appear',array('subject_code')); $query1->condition('reg_no',$key,'=') AND $query1->condition('semester_appear',$semester,'=')AND $query1->condition('month',$month,'=') AND $query1->condition('year',$year,'='); $query1->orderBy('sub_serial_no','ASC'); $results = $query1->execute();  while ($record_res = $results->fetchAssoc()) {  $subject_name = $record_res['subject_code'];  $query = db_select('subject'); $query->fields('subject', array('subject_name','subject_code')); $query->condition('subject_code',$subject_name,'=') ; $subject_results = $query->execute();  foreach($subject_results as $sub_result) {  $options[$sub_result->subject_code]=t($sub_result->subject_name); }    $form['subjects']['name']= array(     '#type' => 'select',     '#title' => t('Please Select Subject'),     '#options' => $options, '#required' => TRUE,);  $form['subjects']['inter'] = array(   '#type' => 'textfield',    '#title' => t('Internal Marks'),    '#size' => 60,    '#maxlength' => 128,    '#required' => TRUE,);   $form['subjects']['exter'] = array(   '#type' => 'textfield',    '#title' => t('External Marks'),    '#size' => 60,    '#maxlength' => 128,    '#required' => TRUE,);  }  return $form['subjects'];  } 
  
   
   

回答列表

1
 
vote

检查在 form下的看门狗中的详细信息以指示哪个表单元素导致悲伤 - 在您的情况下,它将是"滚动" 或主题名称字段(可能两者都是!)< / p>

如果要更新选项阵列并删除当前设置的选项,则您有2个选择:

在您的表单构建器中,无论是

  unset($form_state['input']['roll']);   

  $options[$form_state['values']['roll']]   = "the option i'm trying to get rid of";     

第一个选项只是丢弃早期选择,后一个选项可保持可用(可能是第一个选项是通常优选)

附加:我发现了我也可以通过弄乱我的ajax调用来造成此错误,以便更新选项确定,但浏览器中的表单元素未更新。在这种情况下,您将注意到您的选项不会更新。然后,您需要仔细检查回调和div ID等。

hth

 

check for details in watchdog under form to get an indication of which form element is causing the grief - in your case it will be the 'roll' or subject name field (possibly both!)

if you are updating the option array and removing the currently set option, then you have 2 choices:

in your form builder, either

unset($form_state['input']['roll']); 

or

$options[$form_state['values']['roll']]   = "the option i'm trying to get rid of";   

the first option just discards the earlier selection, the latter option keeps it available (probably the first option is generally preferable)

additional: I've discovered I can also cause this error by messing my ajax call back so that the options are updated ok, but the form element in the browser isn't updated. In this case you will notice your options are not updating. You then need to double check your callbacks and div id's etc.

hth

 
 
   
   

相关问题

0  使用ajax定制DOM展示  ( Custom dom placement using ajax ) 
我在我的内容类型中使用无限制的图像上传选项。上传图像并删除上传的图像选项与无限制选项正常工作。 通常,上传的图像将在最后一个(上次 - image1,image2,image3,imagen)中显示一个( last)。但是,我需要在第一个/最初的位置显示上传的图像( - imagen,...,image3,...

0  是否有一种方法可以在多步骤表单上调用drupal ajax函数,而不会导致表单重新提交?  ( Is there a way to call a drupal ajax function on a multistep form without causin ) 
我将一个drupal ajax元素添加到我的multiSep表单,但是当它运行时,它重新加载整个表单。 问题是,存在通过每个步骤的壳结构执行的逻辑。当Ajax加载时,下一步逻辑是ran。 例如,用户处于4步形式的步骤2。 用户将导致AJAX调用在预览图像中加载。触发此Ajax呼叫加载步骤3。 再次触发相同的ajax调...

5  如何在表单元素的Ajax回调中中止Ajax请求并重定向  ( How to abort the ajax request and redirect in the ajax callback of form element ) 
我想在Ajax回调函数中重定向页面,而且没有(如"标题" ,"Drupal_Goto" 等)在Ajax回调函数中的重定向工作。 ...

0  从输入字段WebForm触发Ajax回调  ( Trigger ajax callback from input field webform ) 
我有一个使用webform模块构建的表单。在这种情况下在输入框中输入文本WebForm组件2时,我希望它能够执行Ajax函数并将数据放在div中。然而,这在此时不起作用。当我将Ajax连接到$ form ['操作'] ['提交']它确实工作。但是我希望它粘贴到输入框中而不是提交函数。该函数放在Hook_Form_al...

6  如何在基于价格表的数量时动态刷新产品页面上的价格  ( How can i dynamically refresh the price on product page when changing quantity b ) 
我目前正在使用Drupal Commerce构建一个Web商店,并希望在产品页面上显示价格,以便在用户增加数量字段中的金额,例如这里。 如何实现这一目标? ...

5  自定义#ajax“添加另一”按钮仅添加1  ( Custom ajax add another button only adds 1 ) 
此表单由1个TextField和1个Ajax按钮组成。 我正在尝试让它添加另一个文本字段,每次单击。 它适用于第一个,共有2个文本字段。虽然我不能得到2多个以上。 我怀疑DOM正在更新,但不是表单。因此后续回调基于原始表单构建添加元素。 我不确定如何在drupal 8中接近这一点。任何洞察力都会受到赞赏。 这是我的表...

1  无法更改Ajax回调  ( Cant change ajax callback ) 
我有一个令人困惑的Ajax问题,因为某种原因我没有过去。我的提交回调加载一些数据并构建一个带有一些问题的单选按钮。酷。结果集具有某个值($ draveStion = TRUE),然后我想更改提交回调,基本上更新表单中的其他字段。 这是模块(我为额外的"绒毛" 道歉): function my_assisted_...

8  如何将确认添加到Ajax链接?  ( How to add confirmation to ajax link ) 
我正在渲染ajax链接,如下所示: l(t('Click here'), 'mypath', array('attributes' => array('id' => 'my-id', 'class' => array('use-ajax')))); 如何在调用ajax请求之前显示确认对话框? 我这样做在Ja...

2  获取Ajax回调中的当前URL?  ( Get current url inside ajax callback ) 
我已创建称为 mymodule 。 在此URL localhost / mymodule / name 中,我有这个字段: $form['name'] = array( '#title' => t('Enter name'), ... '#ajax' => array( 'event' =>...

1  获取Ajax回调中的当前URL参数?  ( Get current url arguments inside ajax callback ) 
我创建了名为'mymodule'的自定义模块。 在此URL localhost / es / mymodule / name / 1/2/3 中,我有这个字段: $form['name'] = array( '#title' => t('Enter name'), ... '#ajax' => ar...

4  SELLEMEST上由AJAX加载的SELECT字段  ( Simpletest on select field loaded by ajax ) 
我通过谷歌搜索并没有找到答案。堆栈交换是我的最后一个手段。 在我的表单中,我有两个选择字段: $form['system']['foo'] = array( ... '#type' => 'select', '#options' => array('A', 'B', 'C'), ... '#a...

1  自动完成字段不起作用  ( Auto complete field not working ) 
自动完成字段不起作用。我在下拉箱中获得结果,但无法选择任何下拉选项。 这是代码: - function _questionnaire_autocomplete($string = '') { $matches = array(); $result = db_select('questionnaire'...

0  使用日历和jQuery / ajax创建注册网站的工具  ( Tools to create registration site with calendar and jquery ajax ) 
我属于一个志愿者组织,使用一个痛苦的.NET网站来注册班次(例如,您可以为任何人改变注册,而不仅仅是您自己),所以我想创建一个可以处理的Drupal网站这个过程更容易,并且还允许管理员进行更改,而无需支付某人在需要时进行更改。 您可以在下面看到当前站点。 每列是一天,数字(140,148等)是站点,第二列是位置。一目...

5  Drupal 7在自动完成领域按Enter键时禁用提交  ( Drupal 7 disable submit when pressing enter on an autocomplete field ) 
在Drupal 7中,当您在节点编辑表单上的自动完成字段中(在我的情况下,它专门的实体参考自动完成字段),按Enter键提交整个表单。 如何禁用此行为? ...

1  如何使自动完成术语小部件(标记)区分大小写?  ( How to make the autocomplete term widget tagging case sensitive ) 
我注意到,虽然自动填充术语微件(标记)愉快地自动填充术语以及右信的情况下,节约的术语之后被改变为小写。例如。我有两个标签"Drupal的" 和"的Drupal" 虽然我自动完成"的Drupal" 并保存节点,什么会保存为"Drupal的。" 是否有一种方法是强制这种小部件的区分敏感性 - 或词汇? ...

0  查看非管理员用户的公开过滤器Ajax错误  ( View exposed filter ajax error coming for non administrator user ) 
我有事件日历模块,它完美地正常工作。对于其他一些用户( Non-Admin 用户),我必须提供权限访问它们所发布的事件(它们有权查看日历和添加/修改/删除事件)。 到目前为止,一切都很好。现在我添加了暴露的滤波器(事件状态),在我以 Admin 登录时按预期工作。 只有当我用其他一些角色登录时,我得到了: An...

0  Ajax表单复制字段  ( Ajax form duplicates fields ) 
我按照示例模块中遵循ajax_example.module。从本质上讲,我有一个内部有几个字段的现场集。用户填写这些字段,请单击"添加更多" ,然后通过AJAX在IT下面加载另一个字段集。 我的表格适用于最多三个条目。但是,在添加第三个条目之后,它开始重复虚拟集。 生成表单的逻辑是一个简单的循环;它应该为1...

0  在AJAX呼叫期间防止文件上传  ( Prevent file upload during an ajax call ) 
我有一个包含managed_file字段的表单以及数据弹出窗口和选择字段。当用户选择日期时,将进行Ajax调用填充SELECT字段。但是,我注意到每次制作Ajax呼叫时,都会上载文件,导致文件的多个副本存在(每个后续文件附加到的。如果用户选择另一个日期,则再次上传文件。如何在AJAX呼叫期间阻止文件在多次上传文件? ...

1  Ajax事件后重新加载JavaScript  ( Reload javascript after ajax event ) 
我有一个模块,使用按钮加载嵌入视图,每次单击按钮时。 // function to print builder view function workout_builder_template() { $viewName = 'builder_view'; print view...

1  用自动完成提交Ajax表单的问题  ( Problem with submitting ajax form with autocomplete ) 
我是一个新手,以便Drupal并尝试向我们的公司网站添加功能(此模块 名为"userpasswords2" 搜索本地Mailsystem密码的数据库)。 我正在使用Ajax自动完成和修改表单。 ajax自动完成工作正常,我可以选择用户,但我有问题 - 我无法通过输入键提交表单。如果我通过鼠标通过Hittin'提交'...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.