Основываясь на том, что Стэн и Янн-ч сделали, но этот по умолчанию используется для первой кнопки. Красота этого общего подхода заключается в том, что он выбирает как щелчок, так и клавишу ввода (даже если фокус не был на кнопке. Если вам нужно разрешить ввод в форму, просто ответьте на это, когда кнопка сфокусирована ( то есть ответ Стэна). В моем случае я хотел разрешить ввод, чтобы отправить форму, даже если текущий фокус пользователя был в текстовом поле.
Я также использовал атрибут 'name', а не 'id ', но это тот же подход.
var pressedButtonName =
typeof $(":input[type=submit]:focus")[0] === "undefined" ?
$(":input[type=submit]:first")[0].name :
$(":input[type=submit]:focus")[0].name;
Это не должно быть особенно трудным осуществлением. Мы делаем некоторый довольно подобный материал на одном из моих проектов, так как половина из него работает на Java с помощью Муравья для выполнения соответствующих целей, и другой половиной является.Net (C#) для UI. На проектах работают машины окон для разработки, но серверы (Java) запускают Linux, но в среде UAT (Linux) мы должны выполнить nunits (интеграционные тесты). Реальный прием (не действительно трудный прием) позади этого имеет файл типа "build" NAnt, который может работать в обеих средах, который, кажется, то же самое, которое Вы пытаетесь сделать здесь.
Конечно, Вы понимаете, что необходимо будет установить NAnt на Моно сначала:
$ export MONO_NO_UNLOAD=1
$ make clean
$ make
$ mono bin/NAnt.exe clean build
И затем Ваш файл типа "build" должен быть записан таким способом, которым он разделяет проблемы. Некоторые части файла типа "build", записанного для окон, не будут работать в Linux, например. Таким образом, действительно просто необходимо разделить его ITO определенные цели в файле типа "build". После этого существует много способов, которыми можно выполнить определенные цели из командной строки. Пример мог бы быть похожим на это:
<project name="DualBuild">
<property name="windowsDotNetPath" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5" />
<property name="windowsSolutionPath" value="D:\WorkingDirectory\branches\1234\source" />
<property name="windowsNUnitPath" value="C:\Program Files\NUnit-Net-2.0 2.2.8\bin" />
<property name="monoPath" value="You get the idea..." />
<target name="BuildAndTestOnWindows" depends="WinUpdateRevision, WinBuild, WinTest" />
<target name="BuildAndTestOnLinux" depends="MonoUpdateRevision, MonoBuild, MonoTest" />
<target name="WinUpdateRevision">
<delete file="${windowsSolutionPath}\Properties\AssemblyInfo.cs" />
<exec program="subwcrev.exe" basedir="C:\Program Files\TortoiseSVN\bin\"
workingdir="${windowsSolutionPath}\Properties"
commandline="${windowsSolutionPath} .\AssemblyInfoTemplate.cs
.\AssemblyInfo.cs" />
<delete file="${windowsSolutionPath}\Properties\AssemblyInfo.cs" />
<exec program="subwcrev.exe" basedir="C:\Program Files\TortoiseSVN\bin\"
workingdir="${windowsSolutionPath}\Properties"
commandline="${windowsSolutionPath} .\AssemblyInfoTemplate.cs
.\AssemblyInfo.cs" />
</target>
<target name="WinBuild">
<exec program="msbuild.exe"
basedir="${windowsDotNetPath}"
workingdir="${windowsSolutionPath}"
commandline="MySolution.sln /logger:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,
ThoughtWorks.CruiseControl.MsBuild.dll;msbuild-output.xml
/nologo /verbosity:normal /noconsolelogger
/p:Configuration=Debug /target:Rebuild" />
</target>
<target name="WinTest">
<exec program="NCover.Console.exe"
basedir="C:\Program Files\NCover"
workingdir="${windowsSolutionPath}">
<arg value="//x "ClientCoverage.xml"" />
<arg value=""C:\Program Files\NUnit-Net-2.0 2.2.8\bin
\nunit-console.exe"
MySolution.nunit /xml=nunit-output.xml /nologo" />
</exec>
</target>
<target name="MonoUpdateRevision">
You get the idea...
</target>
<target name="MonoBuild">
You get the idea...
</target>
<target name="MonoTest">
You get the idea...
</target>
</project>
Для краткости я пропустил обе стороны. Аккуратная вещь - Вы, может использовать NUnit, а также NAnt на обеих средах, и это делает вещи действительно легкими с точки зрения зависимости. И для каждого исполняемого файла можно выгрузить для других, которые работают в той среде, например (xBuild для MSBuild и svn для черепахи и т.д.)
Для большего количества справки на Nunit и т.д. на Моно, проверьте это фантастическое сообщение.
Надежда, которая помогает,
Удачи,
Rob G.
@Rob G - Эй! Это - мое сообщение!;)
Для некоторых других хороших примеров, убедиться просмотреть исходный код NUnit. Я работаю в тесном сотрудничестве с Charlie каждый раз, когда я могу для проверки его создать и протестировать на Моно. Он пытается работать каждый раз, когда он может также.
Стоит отметить что много инструментов как Nant, на котором работают моно 'из поля', т.е.
mono nant.exe
работы