我之前已经进行了搜索,并尝试同时使用pop()
和lastIndexOf
,但在循环下拉菜单中效果不佳。
除了在定界符之后获取值,还有没有将其从列表中删除的方法之外,还有其他选择吗?
这是我的代码:
$(document).ready(function () {
$('#VehicleID').change(function () {
var vehdrv = ($('#VehicleID :selected').val());
var drvid = vehdrv.split("_").pop();
var vehid = vehdrv.split("_")[0];
$('#VehicleID :selected').val(vehid);
//alert($('#VehicleID :selected').val());
if (drvid > 0) {
$('#DriverID').find("option").show().not("option[value*='" + drvid + "']").hide();
$("#DriverID").val(drvid);
//$("#DriverID").val(
//$("#DriverID").find("option:visible:first").val())
}
else {
$("#DriverID").find("option").show();
$("#DriverID").val(
$("#DriverID").find("option:visible:first").val())
}
}).trigger("change");
})
我从控制器中的下拉菜单:
public ActionResult ReserveInitial()
{
ViewBag.VehicleID = db.Vehicles.Where(item => item.IsReserved == false).Select(a => new SelectListItem
{
Value = a.VehicleID.ToString() + "_" + a.DriverID.ToString(),
Text = a.VehicleMake + " - " + a.PlateNumber,
});
ViewBag.DriverID = db.Drivers.Select(a => new SelectListItem
{
Value = a.DriverID.ToString(),
Text = a.DriverLastName + ", " + a.DriverFirstName
});
return View();
}
编辑 如果将VehicleID链接到驾驶员,则字符串将如下所示: “ 14_5”
如果VehicleID与驾驶员无关,则它看起来像这样: “ 15_0”
答案 0 :(得分:0)
var parts = vehdrv.split("_");
var drvid = parts[1];
var vehid = parts[0];
答案 1 :(得分:0)
您可以尝试
var vehdrv = $('#VehicleID').val().match(/[^_]+/g);
var drvid = vehdrv[0];
var vehid = vehdrv[1];
console.log(drvid,vehid);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="VehicleID" type="text" value="14_5" name="text">