当前位置: 首页 > 知识库问答 >
问题:

如何在呈现页面时将下拉选择更改为其保存的值?

祁烈
2023-03-14

我的问题很难解释,但我希望我能描述得足够好,让它有意义。基本上,我有一个保存员工数据的表单,表单中有一个部分保存员工的第二个电话号码。我有两个下拉列表旁边的这一点,指定时间,第二个号码是可用的联系原因。完成后,我将表单保存到sql数据库中。我不确定这是否可行,但当我从应用程序中调出此员工数据时,我希望使用以前的当前值选择下拉列表。现在我不确定使用select是否是最好的方法,或者我是否应该用另一种方法,任何建议都会有帮助,谢谢!

值得注意的是,我从数据库接收的这个对象是一个JSON对象,看起来像这样:{"from":"1:00pm","To":"8:00pm"}。当在我们的应用程序中选择该员工时,我将获取此信息并将其解析为状态变量。

employee.js


export default class Employee extends Component{

if(this.props.employeeKey){
 constructor(props){
  super(props);

  this.state = {
   Name: this.props.name,
   Phone: this.props.phone,
   SecondaryPhone: this.props.secondaryPhone,
   AvailTimes: JSON.parse(this.props.availTimes),
   times: this.props.times,
   TimeFrom: "",
   TimeTo: ""
   }else{

   this.state = {
   Name: "",
   Phone: "",
   SecondaryPhone: "",
   AvailTimes: "",
   times: [],
   TimeFrom: "",
   TimeTo: "",
   }
  }
 }


 onChange(value, e){
  switch(value){
   case "Phone": this.setState(Phone: e.target.value)
    break;
   case "Name": this.setState(Name: e.target.value)
    break;
   case "SecondaryPhone": this.setState(SecondaryPhone: e.target.value)
    break;
   case "FromTime": this.setState(TimeFrom: e.target.value)
    break;
   case "ToTime": this.setState(TimeTo: e.target.value)
    break;
   }



  render(){

   var divToRender = (

    <label>
     From:
    <select onChange={this.onChange.bind(this, 'FromTime')}>{this.state.times.map(time => {return (<option value={time}> {time} </option>)})}</select>
    </label>

    <label>
     To:
    <select onChange={this.onChange.bind(this, 'ToTime')}>{this.state.times.map(time => {return (<option value={time}> {time} </option>)})}</select>
    </label>
   );

   return divToRender
 }
}

我曾考虑在我的状态之前调用onChange()方法,以便在加载页面时加载这些值,但我猜它可能不起作用。

共有1个答案

梁丘俊人
2023-03-14

找到了有效的解决方案,但不确定这是否是最佳的解决方案:


<select onChange={this.onChange.bind(this, 'FromTime')}>{this.state.times.map(time => {return (<option value={time} selected={this.state.TimeFrom == time}> {time} </option>)})}</select>

 类似资料:
  • 目前,我面临着一个奇怪的问题-当我的页面在浏览器中呈现时,剑道dropDownlist显示其选定的值(选定的id)。你可以在下面的截图中看到它。但是在页面加载完成后,它呈现得非常好。 我们已经参考了这个链接-Kendo DropDownList在加载时在DataTextField之前显示DataValueField,但在这个答案中,他们将在渲染之前隐藏dropdown。我不想要它。我们使用了剑道d

  • 问题内容: 我要实现的事情是,无论何时更改下拉列表,我都希望更改之前的下拉列表的值。我正在使用1.3.2版的jQu​​ery并使用on change事件,但是更改后得到的值是。 可以说,当我在onchange事件中将其更改为堆栈时(即,当我将其更改为堆栈时),现在选择了My选项,我希望它是先前的值,即本例中的期望值。 如何做到这一点? 编辑: 就我而言,我在同一页面中有多个选择框,并希望将相同的内

  • 每次用户在ChartJS中选择新的图表类型时,我都试图确定重新加载画布的正确方法,但现在不会更改图表类型: chartJs.js index.html

  • 问题内容: 在这里,我尝试使用Selenium脚本从下拉列表中选择一个值,但 在控制台中却收到此错误,例如 “线程“主”中的异常” org.openqa.selenium.support.ui.UnexpectedTagNameException:元素应 为“选择”但为“跨度”。 下拉菜单中有多个值,我需要在其中选择一个值。 问题答案: @MosheSlavin的分析和回答是正确的方向。 这个错误

  • 如何获得在呈现HTML页面的JTextPane中选择的一行文本(我所说的行是指呈现的文本中两个换行字符之间的任何文本,可见)的HTML源?

  • 我是新来的。我不知道问题出在哪里这是我的代码 我在结账页面的账单表单中添加了一个选择字段。 问题 提交时未保存或更新记录。问题在于使用字段值更新订单元。值未在数据库中更新 数据库中区域值未更新的问题