下面是我在Visual Studio代码中的html表单:

<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initialscale=1.0">
        <h1>CAR SERVICE CENTRE</h1>
        <link rel="stylesheet" href="design.css">
    </head> 
    <body>

        <form name="CarServ" id="myForm">
            <div>
                <label>CarModel:</label>
                <input type="text" id="model" size="65" name="carmodel" placeholder="Enter Car Model" required>
            </div>
            <div>
                <label>Car Number:</label>
                <input type="text" size="65" id="num" name="carnum" placeholder="Enter Car Number" required >
            </div>
            <div>
                <label>Contact number:</label>
                <input type="text" size="65" id="cnum" name="contactnum" placeholder="Enter your contact number" required>
            </div>
            <div id="service" class="opt">
                <label>Type of service:</label>
                <input type="radio" name="typeofservice" id="t1" value="Waterwash"required>
                <label for="t1">Waterwash</label>
                <input type="radio" name="typeofservice" id="t2" value="Fullservice" required>
                <label for="t1">Fullservice</label>
    
    
            </div>
            <br/>
            <div class="check">
    
                <label>Addons:</label>
                
                <label><input type="checkbox" name ="checkk" value="10%off First service visit" class="checkin" id="mycheck1">10%off First service visit</label>
    
                <label><input type="checkbox" name="checkk" value="10%off Waterwash" class="checkin" id="mycheck2">10%off Waterwash</label>
    
                <label><input type="checkbox" name ="checkk" value="Free AC Inspection" class="checkin" id="mycheck3">Free AC Inspection</label>
    
            </div>  
    
            <div class="dropd">
                <label>Select State:</label>
                    <select class="form-control" name ="selectstate" id="select1">
                        <option value="0" selected="" disabled="">--SELECT--</option>
                        <option value="" selected="selected">Select State</option>
                        <option value="option1">Tamilnadu</option>
                        <option value="option2">Kerala</option>
                        <option value="option3">Karnataka</option>
                        <option value="option4">Maharastra</option>
                    </select>   
            </div>
            
            <div class="dropdcontent">
                <label>Select City:</label>
                    <select class="form-control" name ="selectcity" id="select2">
                        <option value="option1">Select State</option>
                        <option value="option1">Chennai</option>
                        <option value="option1">Coimbatore</option>
                        <option value="option1">Madurai</option>
                        <option value="option2">Select State</option>
                        <option value="option2">Trivandrum</option>
                        <option value="option2">Kochi</option>
                        <option value="option2">Kollam</option>
                        <option value="option3">Select State</option>
                        <option value="option3">Bangalore</option>
                        <option value="option3">Mysore</option>
                        <option value="option4">Select State</option>
                        <option value="option4">Mumbai<option>
                        <option value="option4">Pune<option>
                  </select>     
            </div>
            <br/>
                
            <button type="submit">Submit</button>
        
    
        </form>

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js"></script>
        <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
        <script src="carservice.js"></script>
        <script src="formtoapi.js"></script>
    
    
    </body>
</html>

Carservice.js-从属下拉菜单的javascript文件:


var $select1 = $( '#select1' ),
    $select2 = $( '#select2' ),
    $options = $select2.find('option');

    
$select1.on( 'change', function() {
    var selectedStateText = $(this).find("option:selected").text();
    $select2.html($options.filter('[value="' +this.value + '"]') );
}).trigger('change');

$select2.on( 'change', function() {
    var selectedCityText = $(this).find("option:selected").text();
}); 


Formtoapi.js:将表单发布到Visual Studio 2022中的Web-API:


document.getElementById("myForm").addEventListener("submit",submitForm);
function submitForm(event){
  event.preventDefault();
  var formData=new FormData(event.target);
  fetch("http://localhost:5239/api/Forms/submit-form",{
    mode:"cors",
    method:"POST",
    body:formData
  })
  .then(response =>{
    if(!response.ok){
      throw new Error("HTTP error"+respsonse.status);
    }
    return response.json();
  })
  .then(data=>{
    console.log("Success:",data);
  })
  .catch(error=>{
    console.error("Error:",error);
  });

}

在API中,我得到了一个控制器 FormsController.cs:



using CarFormApi.Models;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;

namespace CarFormApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class FormsController : ControllerBase
    {
        private static List<FormsDataModel> formsDataList = new List<FormsDataModel>();

        [HttpPost("submit-form")]
        public IActionResult SubmitForm([FromForm] FormsDataModel formsData)
        {
            // process the form data
            string carmodel = formsData.Carmodel;
            string carnum = formsData.Carnum;
            string contactnum = formsData.Contactnum;
            string typeofservice = formsData.Typeofservice;
            string selectstate = formsData.Selectstate;
            string selectcity = formsData.Selectcity;



            // validate the form data
            if (string.IsNullOrWhiteSpace(carmodel) || string.IsNullOrWhiteSpace(carnum) || string.IsNullOrWhiteSpace(contactnum) || string.IsNullOrWhiteSpace(typeofservice) || string.IsNullOrWhiteSpace(selectstate) || string.IsNullOrWhiteSpace(selectcity))
            {
                return BadRequest(new { Message = " Enter the required fields." });
            }
            formsDataList.Add(formsData);


            return Ok(formsData);

        }

    }
}

还创建了一个FormsDataModel:

namespace CarFormApi.Models
{
    public class FormsDataModel
    {
        public string Carmodel { get; set; }
        public string Carnum { get; set; }
        public string Contactnum { get; set; }
        public string Typeofservice { get; set; }
        public string Checkk { get; set; }
        public string Selectstate { get; set; }
        public string Selectcity { get; set; }

    }
}

除了那些下拉菜单之外,一切都运行得很好.我的html表单的输入值正在回发到控制台.是的,我可以看到所选选项的值被张贴,但不能看到所选选项的实际名称/标签.我希望在控制台中显示选项(如"卡纳塔克邦")而不是值(如"option1").

谁能告诉我怎么才能做到这一点,请帮助我明白我做错了什么.

推荐答案

如果要获取选定的选项文本,可以使用FormData.set()为现有关键点设置新值:

var formData = new FormData(event. Target);

formData.set("selectstate", $("#select1 option:selected").text());
formData.set("selectcity", $("#select2 option:selected").text());

顺便说一句,相同名称的输入checkk是复选框类型,您可以在此处 Select 多个值.如果要接收多个选定值,则需要将属性类型更改为string[]:

public string[] Checkk { get; set; }

Javascript相关问答推荐

对象和数字减法会抵消浏览器js中的数字

使用TMS Web Core中的HTML模板中的参数调用过程

如何最好地从TypScript中的enum获取值

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

vscode扩展-webView Panel按钮不起任何作用

提交表格后保留Web表格中的收件箱值?

用JavaScript复制C#CRC 32生成器

如何根据当前打开的BottomTab Screeb动态加载React组件?

VUE 3捕获错误并呈现另一个组件

在Java中寻找三次Bezier曲线上的点及其Angular

如何在Angular拖放组件中同步数组?

VSCode中出现随机行

与svg相反;S getPointAtLength(D)-我想要getLengthAtPoint(x,y)

如何使用<;Link>;执行与JS Reaction中的";window.Location=/GameOverDied;";类似的操作?

为什么延迟在我的laravel项目中不起作用?

Reaction useState和useLoaderData的组合使用引发无限循环错误

AG-GRIDreact 显示布尔值而不是复选框

select 2-删除js插入的项目将其保留为选项

Promise.race()返回已解析的promise ,而不是第一个被拒绝的promise

使用props 将VUE 3组件导入JS文件